【问题标题】:How to use Kafka with TLS peer verification turned off如何在关闭 TLS 对等验证的情况下使用 Kafka
【发布时间】:2019-06-17 22:35:00
【问题描述】:

我正在使用 let's encrypt staging 证书测试 kafka 集群的创建。创建后,在我的机器上运行 kafka 提供的 kafka-console-consumer.shkafka-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


【解决方案1】:

kafka 配置有设置

ssl.client.auth

它的值可以根据需要、请求或无设置。您可以将其设置为请求。这意味着客户端身份验证是可选的。不像请求的那样,如果设置了这个选项,客户端可以选择不提供关于自己的身份验证信息

https://docs.confluent.io/current/installation/configuration/broker-configs.html

【讨论】:

  • 感谢您的回复!我已经尝试设置ssl.client.auth=none,但这并没有改变问题。我还尝试对这些字段使用 PLAIN/PLAINTEXT:advertised.listenerslistenersinter.broker.listener.namesasl.enabled.mechanismssasl.mechanism.inter.broker.protocol
  • 这将我的错误更改为:WARN [Producer clientId=console-producer] Connection to node -1 (2.kafka.mysite.com/10.1.2.3:9092) terminated during authentication. This may happen due to any of the following reasons: (1) Authentication failed due to invalid credentials with brokers older than 1.0.0, (2) Firewall blocking Kafka TLS traffic (eg it may only allow HTTPS traffic), (3) Transient network issue. (org.apache.kafka.clients.NetworkClient) 我肯定错误不是来自 #2 或 #3,即使我禁用了它,我知道我正在发送正确的用户名/密码。
  • @swagrov 你有没有为这个警告找到任何补救措施?
猜你喜欢
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多