当前位置: 首页 > 知识库问答 >
问题:

kafka双向ssl身份验证

霍弘厚
2023-03-14

我试图设置2方式ssl身份验证。我的要求是经纪人应该只认证特定的客户。

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

  1. 获取代理的证书,并在代理密钥库中配置它
   ssl.keystore.location=/home/kafka/certificate.p12
   ssl.keystore.password=xxxxx
   ssl.client.auth=required
   ssl.keystore.location=/home/kafka/certificate.p12
   ssl.keystore.password=xxxxx
   keytool -export -file cert -keystore certificate.p12 -alias "12345" -storetype pkcs12 -storepass xxxxx
   keytool -keystore truststore.p12 -import -file cert -alias 12345 -storetype pkcs12 -storepass xxxxx -noprompt
   ssl.truststore.location=/home/kafka/truststore.p12
   ssl.truststore.password=xxxxx
   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个答案

司英飙
2023-03-14

默认格式为jks,

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

kafka.server.keystore.jks的别名myserver.internal.net

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

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

 类似资料:
  • 我已经在Netty中尝试了双向SSL身份验证 但这个例子不再显示任何信息,只是一个404未找到。我在这里找到了一些帮助: https://github.com/code4craft/netty-learning/blob/master/netty-3.7/src/main/java/org/jboss/netty/example/securechat/SecureChatSslContextFac

  • 我正在开发一个基于服务器和客户端的应用程序,它需要双向SSL认证。(客户端验证服务器,服务器验证客户端,两者都使用SSL证书。) 我对Netty很陌生,对此几乎没有疑问。 < li >使用Netty可以进行双向认证吗? < li >通过在服务器和客户端的pipelinefactories中添加另一个SslHandler可以简单地实现吗? < li >如果上述情况属实,我如何在ChannelConn

  • OkHttp:2.0.0-RC1,改装:1.5.1。 我正在创建okHttp客户端,如这里所述:如果我使用okhttp 2.0和最新的改造,NoSuchmetodError?并设置我自己的,并像这样初始化 当我尝试建立双向身份验证SSL连接时,每次应用程序崩溃时都会出现以下日志: 我在这里看到了关于这个问题的讨论:https://github.com/square/okhttp/issues/18

  • 想得到一些关于设置简单的双向ApacheSSL的建议。 我们使用openSSL创建了一个密钥文件和csr请求。然后,我们将其提交给CA,并收到一个crt文件与CA的crt文件一起返回。 我们已经配置了ApacheHTTP。conf文件,并在加载mod_ssl模块后添加了以下参数。 开启SSLEngine SSLCACertificateFile/local/fast/fcHome/deployme

  • 我正在尝试为相互身份验证设置ActiveMQ,以便客户端需要证书才能将消息传递给代理。我在代理上创建了一个密钥库和一个信任库,并导出了一个复制到客户端的证书。在客户端,我也做了同样的事情,尽管我使用的是NMS,所以我只使用导出的证书,我将其添加到代理的信任库中。我还将证书添加到另一个本地计算机可信根证书中。 代理的配置如下: ${activemq.base}/conf/login.config $

  • 我目前正在使用SSL身份验证配置Apache Kafka,在启动服务时遇到错误。代理程序似乎启动正确(似乎发生了领导人选举等),但一旦开始执行任何集群操作,我就会在日志中不断看到下面的错误。 尝试重新创建密钥和信任存储,尝试从代理间侦听器中删除SSL(这会导致匿名主体,我不想授予对任何资源的访问权)。 要解释我的配置: 使用SSL principal builder运行Kafka 2.2 我设置了