【发布时间】:2019-06-17 22:35:00
【问题描述】:
我正在使用 let's encrypt staging 证书测试 kafka 集群的创建。创建后,在我的机器上运行 kafka 提供的 kafka-console-consumer.sh 和 kafka-console-producer.sh 脚本。当我运行 let's encrypt production 时,它运行良好。但是现在我正在使用暂存证书,我在运行生产者时得到了这个:
ERROR [Producer clientId=console-producer] Connection to node -1 (2.kafka.mysite.com/10.1.17.191:9092) failed authentication due to: SSL handshake failed (org.apache.kafka.clients.NetworkClient)
我将这些属性用于生产者脚本:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="secret";
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
我想提供忽略 TLS 的选项,并且我希望它是一些我可以切换(在集群或客户端上)以允许它的参数。我怎样才能做到这一点?对于熟悉 Rabbitmq 的人来说,我认为它类似于 VERIFY_PEER=false,即 VERIFY_NONE。
【问题讨论】:
-
只是好奇,您启用了 TLS 的侦听器是否仍使用端口 9092,如您的消息
Connection to node -1 (2.kafka.mysite.com/10.1.17.191:9092...中所示?另外,您使用的是哪个 kafka 版本? -
@mazaneicha 是的,服务器配置有
listeners: "SASL_SSL://0.0.0.0:9092"和ssl.endpoint.identification.algorithm: ""。 kafa 版本 = 2.2.0 -
所以我假设你看到了stackoverflow.com/questions/52590351/…。如果在
ssl.endpoint.identification.algorithm:(删除"")之后留空会怎样? -
很抱歉这样发布:它在最终配置中确实是一个空白字符串。这就是我使用 Ansible 设置它的方式,但是一旦它通过模板放入配置中,它就是一个空字符串。 @mazaneicha
-
您是否尝试过使用
openssl s_client -showcerts -debug -connect <host:port>之类的东西来测试连接?
标签: ssl apache-kafka tls1.2