使用Node.js中的cassandra-driver通过SSL连接到Cassandra Apache

时间:2015-04-09 20:48:30

标签: node.js ssl cassandra

我尝试连接到我的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)
	});

我做错了什么? 请帮忙!

2 个答案:

答案 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连接失败。