【问题标题】:kafka 2 way ssl authenticationkafka 2路ssl认证
【发布时间】:2021-08-22 04:01:09
【问题描述】:

我正在尝试设置 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 颁发的证书的客户端进行身份验证。

可能是什么问题?

【问题讨论】:

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


    【解决方案1】:

    默认格式为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

    【讨论】:

    • 我试过你建议的keytool命令。仍然出现同样的错误。
    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2014-06-25
    • 2015-05-04
    相关资源
    最近更新 更多