我正在尝试将node.js代码转换为Python2.7。我正在尝试连接到卡桑德拉数据库与certificates.this是我的节点代码。
var ssl_options = {
key: fs.readFileSync('./certificates/cassandra/client/user.key.pem') ,
cert: fs.readFileSync('./certificates/cassandra/client/user.cer.pem'),
ca: [ fs.readFileSync('./certificates/cassandra/server/node0.cer.pem'),
fs.readFileSync('./certificates/cassandra/server/node1.cer.pem') ]
};
cassandra_client = new cassandra.Client(
{
contactPoints: utils.CASSANDRA_CONTACT_POINTS,
sslOptions: ssl_options,
policies: {
loadBalancing : loadBalancingPolicy
}
});Python代码:
from cassandra.cluster import Cluster
from cassandra.policies import DCAwareRoundRobinPolicy
f1 = open("user.key.pem","r")
key = f1.read()
f2= open("user.cer","r")
cert = f2.read()
f3 = open("node1.cer.pem","r").read()
f4 = open("node1.cer.pem","r").read()
ca = [f3,f4]
ssl_options = {
"key" : key ,
"cert": cert,
"ca": ca,
};
cluster = Cluster(
['10.0.1.13', '10.0.1.9'],
load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='dc1'),
ssl_options=ssl_options)我得到一个错误
cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'10.0.1.13:9042': TypeError("wrap_socket() got an unexpected keyword argument 'cert'",), '10.0.1.9:9042': TypeError("wrap_socket() got an unexpected keyword argument 'cert'",)})在读取证书时,我是否做错了什么?
发布于 2019-07-26 01:46:24
传递给Python driver的选项列表与您传递给Node.js的选项列表确实不同。你应该使用类似这样的东西(示例取自documentation):
from cassandra.cluster import Cluster, Session
from ssl import SSLContext, PROTOCOL_TLSv1, CERT_REQUIRED
ssl_context = SSLContext(PROTOCOL_TLSv1)
ssl_context.load_verify_locations('/path/to/rootca.crt')
ssl_context.verify_mode = CERT_REQUIRED
ssl_context.load_cert_chain(
certfile='/path/to/client.crt_signed',
keyfile='/path/to/client.key')
cluster = Cluster(['127.0.0.1'], ssl_context=ssl_context)
session = cluster.connect()https://stackoverflow.com/questions/57206447
复制相似问题