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

Mat*_*usz 4 ssl cassandra node.js

我尝试连接到我的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)
	});
Run Code Online (Sandbox Code Playgroud)

我做错了什么?请帮忙!

jor*_*ebg 5

您必须ObjectsslOption属性中指定实例以在驱动程序上启用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
});
Run Code Online (Sandbox Code Playgroud)

如果您不使用客户端证书,则可以使用空对象实例:

var client = new cassandra.Client({
  contactPoints : ['127.0.0.1'],
  authProvider : new cassandra.auth.PlainTextAuthProvider('cassandra', 'cassandra'),
  sslOptions : {}
});
Run Code Online (Sandbox Code Playgroud)

它将使用Node.js tls模块中指定的默认值.