Kafka允许客户端通过SSL连接 . 默认情况下,SSL已禁用,但我通过引用以下链接启用了该功能 . http://docs.confluent.io/2.0.0/kafka/ssl.html
完成所有配置后,Producer / Consumer无法生成/使用该消息 .
[2016-02-29 09:20:49,189] ERROR Error when sending message to topic ssltopic with key: null, value: 2 bytes with error: Failed to update metadata after 60000 ms. (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
sas
[2016-02-29 09:21:16,031] WARN Failed to send SSL Close message (org.apache.kafka.common.network.SslTransportLayer)
java.io.IOException: Connection reset by peer
2 回答
supermonk的上述答案澄清了大多数要检查的地方 . 我遇到了与OP类似的问题,错误不在代理配置中,而是客户端配置 .
在官方documentation中,虽然他们暗中提到将client.keystore创建为步骤1,但我错过了使用CA签署证书,就像为server.keystore所做的那样 . 这导致Kafka经纪人拒绝来自客户( 生产环境 者/消费者)的连接 .
执行这两个步骤已经消除了我的问题 .
这将使用CA证书对证书进行签名,并将CARoot和签名证书添加到client.keystore .
参考:Confluent blog on securing Apache Kafka
以下是一些验证步骤 . 由于错误日志不详细,您是否可以尝试以下步骤来验证设置是否良好 .
keystore
和truststore
是否设置正确,您可以运行以下命令:openssl s_client -debug -connect localhost:9093 -tls1注意:TLSv1应列在ssl.enabled.protocols下 .
在此命令的输出中,您应该看到服务器的证书:
如果证书未显示或者有任何其他错误消息,则表明
keystore
未正确设置 .Reference 1.和Reference 2.