首页 > 解决方案 > 如何使用信任库文件和密码让 KafkaConsumer 在 python 中获取主题内容?

问题描述

我已获得信任库文件(.jks)和密码。

我正在使用以下代码从 kafka 主题获取消息:

from kafka import KafkaConsumer
consumer = KafkaConsumer('Topicname',security_protocol = 'SSL', bootstrap['x.com:9092'])
from message in consumer:
   print(message)

上面的代码正在打印以下错误:

SSLCertVerificationError: certificate verify failed

我知道我没有使用信任库文件和密码.. 但无法弄清楚如何使用这些信息来使上述代码正常工作。

基本上,我需要 python 代码片段来使用该文件。

如果有人可以帮助我,我将不胜感激。

谢谢, N

标签: pythonsslkafka-consumer-apitruststore

解决方案


如果您有证书但证书颁发机构未包含在默认 CA 列表中,则可能会出现此错误。

因此,您可以通过将根 CA 证书包含在您的代码中来嵌入它。尝试以下步骤:

  1. 使用以下命令从 Kafka 信任库中提取根证书:

    keytool -exportcert -alias CARoot -keystore <TRUST-STORE-PATH> -rfc -file CARoot.pem
    
  2. 然后在您的消费者代码中,您需要添加以下配置参数:

    from kafka import KafkaConsumer  
    
    consumer = KafkaConsumer(bootstrap_servers='<SERVER-LIST-WITH-PORTS>',
    security_protocol='SSL',
    ssl_check_hostname=True,
    ssl_cafile='<PATH-TO-CARoot.pem>',
    ...
    )
    
  3. 您可能还想验证 SSL 通信的端口,因为 SSLlisteners通常是 9093 而不是 9092。

希望这可以帮助。


推荐阅读