卡夫卡制片人无法向经纪人认证

时间:2020-01-31 15:35:48

标签: python ssl apache-kafka kafka-python

我正在尝试在简单的kafka生产者和代理之间创建SSL加密的通信。

我完全按照官方文档中的说明配置了代理:https://kafka.apache.org/documentation/#security

对于生产者,我使用的是kafka-python,其构造函数的配置如下:

self.producer = KafkaProducer(bootstrap_servers=broker, 
                              request_timeout_ms=request_timeout,
                              security_protocol='SSL',
                              ssl_check_hostname=True,
                              ssl_cafile='ssl/CARoot.pem',
                              ssl_certfile='ssl/certificate.pem',
                              ssl_keyfile='ssl/key.pem')

这是发生了什么

  • 如果将ssl_check_hostname设置为False,则连接建立正确。作为证明,我尝试使用Wireshark嗅探数据包,但我什么也看不到,相反,通过PLAINTEXT通信,Wireshark可以获取所有数据包并可以轻松读取所有内容。
  • 如果将ssl_check_hostname设置为True,则系统出现以下错误:

    [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:IP地址不匹配,证书对于[IP_address]无效

在Internet上搜索时,我发现此问题与在配置server.keystore期间插入的SAN有关。

keytool -keystore server.keystore.jks -alias localhost -validity 365000 -genkey -keyalg RSA -ext SAN = DNS:{fqdn}

我尝试过:

  • SAN = DNS:localhost(其中locahost是hostname --fqdn命令的输出
  • SAN = DNS:X.X.X.X(其中X.X.X.X是代理的IP地址)
  • SAN = IP:X.X.X.X(其中X.X.X.X是代理的IP地址)
  • SAN = IP:Y.Y.Y.Y(其中Y.Y.Y.Y是生产者的IP地址) 在这种情况下,尝试连接时出现以下错误:

    [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书

我该如何解决这个问题?

谢谢。

0 个答案:

没有答案