python - 如何使用信任库文件和密码让 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
解决方案
如果您有证书但证书颁发机构未包含在默认 CA 列表中,则可能会出现此错误。
因此,您可以通过将根 CA 证书包含在您的代码中来嵌入它。尝试以下步骤:
使用以下命令从 Kafka 信任库中提取根证书:
keytool -exportcert -alias CARoot -keystore <TRUST-STORE-PATH> -rfc -file CARoot.pem
然后在您的消费者代码中,您需要添加以下配置参数:
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>', ... )
您可能还想验证 SSL 通信的端口,因为 SSL
listeners
通常是 9093 而不是 9092。
希望这可以帮助。
推荐阅读
- c# - 为应用程序c#制作json配置
- json - 如何在 MySQL (10.2.36-MariaDB) 表中导入 JSON 值?
- python - multiprocessing.shared_memory 的使用
- c# - 传递对象列表以获取 Web API 中的方法
- python - .anaconda 文件夹占用了太多空间
- algorithm - 使用 DP 的 Tsp 时间复杂度
- c# - 将文本添加到已经有文本 C# 的标签
- wordpress - 如何在 WordPress 中向 Gutenberg 块添加自定义 CSS 样式?
- julia - 如何检查 DataFrame 的所有元素是否都是非负数?
- php - 以微秒从数据库打印日期时间