我正在尝试在我的Kafka服务器上启用SSL身份验证。我正在遵循以下文档(链接)中的7.2节。
http://kafka.apache.org/documentation.html#security_ssl
执行了所有步骤,但是在调用producer.bat文件将数据发送到主题时,出现以下错误。
错误 [生产者clientId = console-producer]由于以下原因,与节点-1的连接身份验证失败:SSL握手失败(org.apache.kafka.clients.NetworkClient)
原因: java.security.cert.CertificateException:未找到与本地主机匹配的名称
注意:我已经使用CN = localhost创建了该证书。
答案 0 :(得分:3)
可以通过将ssl.endpoint.identification.algorithm设置为客户端上的空字符串来禁用服务器主机名验证
答案 1 :(得分:1)
通常 java.security.cert.CertificateException:未找到与本地主机匹配的名称,这意味着证书中的主机名与服务器的主机名不匹配。
the following thread上对此错误有很好的解释。
答案 2 :(得分:1)
答案 3 :(得分:0)
我们遇到了以下错误,这可能是因为Kafka版本从1.x升级到了2.x。
javax.net.ssl.SSLHandshakeException:常规SSLEngine问题... javax.net.ssl.SSLHandshakeException:常规SSLEngine问题... java.security.cert.CertificateException:找不到与***相匹配的名称
或
[Producer clientId = producer-1]由于以下原因,与节点-2的连接验证失败:
ssl.endpoint.identification.algorithm的默认值已更改为https,它将执行主机名验证(否则可能会发生中间人攻击)。将ssl.endpoint.identification.algorithm设置为空字符串以恢复以前的行为。 Apache Kafka Notable changes in 2.0.0
解决方案: SslConfigs.SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_CONFIG,“”
答案 4 :(得分:0)
刚刚设置 ssl.endpoint.identification.algorithm = 它可以帮助您。