kafka 2 路 ssl 身份验证

时间:2021-06-04 04:24:17

标签: ssl apache-kafka ssl-certificate tls1.2

我正在尝试设置 2 路 ssl 身份验证。我的要求是经纪人应仅对特定客户进行身份验证。

我的组织有一个 CA,它以 pkcs12 格式颁发所有证书。我遵循的步骤如下。

  1. 为代理获取证书并在代理密钥库中进行配置
   ssl.keystore.location=/home/kafka/certificate.p12
   ssl.keystore.password=xxxxx
   ssl.client.auth=required
  1. 为客户端获取证书并在客户端密钥库中进行配置
   ssl.keystore.location=/home/kafka/certificate.p12
   ssl.keystore.password=xxxxx
  1. 使用 keytool 命令从客户端证书中提取公共证书
   keytool -export -file cert -keystore certificate.p12 -alias "12345" -storetype pkcs12 -storepass xxxxx
  1. 已将证​​书导入代理信任库。代理信任库仅包含客户端 12345 证书。
   keytool -keystore truststore.p12 -import -file cert -alias 12345 -storetype pkcs12 -storepass xxxxx -noprompt
  1. 在代理中配置信任库。
   ssl.truststore.location=/home/kafka/truststore.p12
   ssl.truststore.password=xxxxx
  1. 在客户端配置信任库。客户端信任库包含 CA 证书。
   ssl.truststore.location=/etc/pki/java/cacerts
   ssl.truststore.password=xxxxx

当我运行代理和客户端时,我希望代理对客户端进行身份验证并建立 ssl 连接。而是抛出以下错误。

[2021-06-03 23:32:06,864] ERROR [AdminClient clientId=adminclient-1] Connection to node -1 (abc.com/10.129.140.212:9093) failed authentication due to: SSL handshake failed (org.apache.kafka.clients.NetworkClient)
[2021-06-03 23:32:06,866] WARN [AdminClient clientId=adminclient-1] Metadata update failed due to authentication error (org.apache.kafka.clients.admin.internals.AdminMetadataManager)
org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed
Caused by: javax.net.ssl.SSLProtocolException: Unexpected handshake message: server_hello

我尝试了各种方法,但似乎没有任何效果。当我用只包含 CA 证书的 /etc/pki/java/cacerts 信任库文件替换代理信任库时 然后它工作正常。但它会验证任何拥有 CA 颁发的证书的客户端。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

默认格式为jks,

使用 keytool 创建一个带有证书和密钥的 Java KeyStore (JKS),供 Kafka 使用。系统将提示您为生成的文件创建新密码,并输入上一步中 PKCS12 文件的密码。保留新的 JKS 密码以在下面的配置中使用。

$ keytool -importkeystore -srckeystore server.p12 -destkeystore kafka.server.keystore.jks -srcstoretype pkcs12 -alias myserver.internal.net

注意:忽略来自 keytool 的以下警告是安全的。

JKS 密钥库使用专有格式。建议使用“keytool -importkeystore -srckeystore server.p12 -destkeystore kafka.server.keystore.jks -srcstoretype pkcs12”迁移到行业标准格式PKCS12