【问题标题】:Connect to Cassandra Apache with SSL using cassandra-driver in Node.js在 Node.js 中使用 cassandra-driver 通过 SSL 连接到 Cassandra Apache
【发布时间】:2015-06-15 10:05:47
【问题描述】:
我尝试连接到我的 Cassandra,但我可能配置错误。我在本地主机上运行它。 Cassandra 已生成证书并添加。在 cqlsh 中,标志 --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)
});
我做错了什么?
请帮忙!
【问题讨论】:
标签:
node.js
ssl
cassandra
【解决方案1】:
您必须在 sslOption 属性中指定 Object 实例才能在驱动程序上启用 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 模块中指定的默认值。
【解决方案2】:
您不需要指定tls.connect(options),而只需为sslOptions 提供options。驱动程序使用您提供的sslOptions 调用tls.connect。
如果您进行此更改后仍然出现错误,您能与我分享一下它们是什么吗?有很多不同的因素会导致建立 ssl 连接失败。