我尝试连接到我的Cassandra,但我可能错误地配置了。我在localhost上运行它。 Cassandra已经生成了认证和添加。在cqlsh中,flag -ssl没有错误。我的片段代码是
var tls = require('tls');
var fs = require('fs');
var options = {
key : fs.readFileSync('client-key.pem'),
cert : fs.readFileSync('client-cert.pem'),
ca : [fs.readFileSync('server-cert.pem')]
};
var client = new cassandra.Client({
contactPoints : ['127.0.0.1'],
authProvider : new cassandra.auth.PlainTextAuthProvider('cassandra', 'cassandra'),
sslOptions : tls.connect(options)
});
我做错了什么? 请帮忙!
答案 0 :(得分:5)
您必须在Object
属性中指定sslOption
实例才能在驱动程序上启用ssl。
使用您的代码示例:
var fs = require('fs');
var sslOptions = {
key : fs.readFileSync('client-key.pem'),
cert : fs.readFileSync('client-cert.pem'),
ca : [fs.readFileSync('server-cert.pem')]
};
var client = new cassandra.Client({
contactPoints : ['127.0.0.1'],
authProvider : new cassandra.auth.PlainTextAuthProvider('cassandra', 'cassandra'),
sslOptions : sslOptions
});
如果您不使用客户端证书,则可以使用空对象实例:
var client = new cassandra.Client({
contactPoints : ['127.0.0.1'],
authProvider : new cassandra.auth.PlainTextAuthProvider('cassandra', 'cassandra'),
sslOptions : {}
});
它将使用Node.js tls
模块中指定的默认值。
答案 1 :(得分:3)
您不应该指定tls.connect(options)
,而应该只为{sslOptions}提供options
。司机使用您提供的tls.connect
致电sslOptions
。
如果您进行此更改但仍然出现错误,您能与我分享它们的内容吗?有许多不同的因素可以使建立ssl连接失败。