我正在尝试在我的Kafka服务器上启用SSL身份验证。我在下面的文档(链接)中遵循7.2节。
http://kafka.apache.org/documentation.html#security_ssl
遵循所有步骤,但在调用producer.bat文件将数据发送到主题时,我得到以下错误。
错误[Producer clientId = console-producer]由于以下原因,与节点-1的连接验证失败:SSL握手失败(org.apache.kafka.clients.NetworkClient)
引起:java.security.cert.CertificateException:找不到与localhost匹配的名称
注意:我已使用CN = localhost创建了该证书。
可以通过将ssl.endpoint.identification.algorithm设置为客户端上的空字符串来禁用服务器主机名验证
通常java.security.cert.CertificateException:找不到与localhost匹配的名称意味着证书中的主机名与服务器的主机名不匹配。
在the following thread上有一个很好的解释这个错误。
我们遇到了以下错误,这可能是因为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握手失败
ssl.endpoint.identification.algorithm的默认值已更改为https,后者执行主机名验证(否则可能是中间人攻击)。将ssl.endpoint.identification.algorithm设置为空字符串以恢复以前的行为。 Apache Kafka Notable changes in 2.0.0
解决方案:SslConfigs.SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_CONFIG,“”