我可以使用带有密码字符串的密钥库,信任文件来连接到Datastax开发中心。但是我在互联网上看了看,没有关于如何使用这三个文件将python连接到Cassandra的文档。一切仅与证书和密钥库文件有关。我做了尝试,但实际上没有用。
主机无法连接,并显示ssl:3517错误。
答案 0 :(得分:2)
Python驱动程序尚不能与keystore / trustore一起使用(它们是特定于Java的)。您需要将这些文件中的证书和密钥导出为PEM格式,并按照documentation中的说明进行连接:
from cassandra.cluster import Cluster
from ssl import PROTOCOL_TLSv1, CERT_REQUIRED
ssl_opts = {
'ca_certs': '/path/to/my/ca.certs',
'ssl_version': PROTOCOL_TLSv1,
'cert_reqs': CERT_REQUIRED # Certificates are required and validated
}
cluster = Cluster(ssl_options=ssl_opts)
如果集群启用了客户端的证书检查,那么您需要在keyfile
字典中指定certfile
和ssl_opts
参数,并将路径传递给密钥和证书文件。有关所有available options,请参见python文档。
您可以从密钥库中提取数据,并使用以下方式将其转换为受支持的PEM格式:
keytool -importkeystore -srckeystore myapp.jks -destkeystore myapp.p12 \
-srcalias myapp-dev -srcstoretype jks -deststoretype pkcs12
openssl pkcs12 -in myapp.p12 -out myapp.pem