现在我有两个jks文件:kafka.client.truststore.jks
和client.keystore.jks
,但是,python连接库都使用pem文件auth方式。所以我尝试通过这篇文章将这两个文件转换为pem:Connect to Apache Kafka from Python using SSL,并发现这些异常:
Traceback (most recent call last):
File "/Users/luke/Code/python/mykafka/mykafka.py", line 10, in <module>
ssl_keyfile='/Users/luke/Code/java/kafka-keys/key.pem')
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/kafka/producer/kafka.py", line 328, in __init__
**self.config)
... ...
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 633, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
我从其他人那里收到了这两个jks文件,所以我不知道这些jks文件的别名是什么,所以我按照这个qa:How to check certificate name and alias in keystore files?列出所有别名并找到只有一个,所以使用它在后期。
我创建pem的命令是flollwing:
keytool -list -keystore .keystore
keytool -exportcert -alias kafka-client -keystore kafka.client.keystore.jks -rfc -file certificate.pem
keytool -v -importkeystore -srckeystore kafka.client.keystore.jks -srcalias kafka- client -destkeystore cert_and_key.p12 -deststoretype PKCS12
openssl pkcs12 -in cert_and_key.p12 -nocerts -nodes
keytool -exportcert -alias ca -keystore kafka.client.truststore.jks -rfc -file CARoot.pem
我想知道出了什么问题,我在java中尝试这两个jks文件,它们运行良好。