【问题标题】: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 连接失败。

      【讨论】:

      • 看我下面的帖子
      猜你喜欢
      • 2019-10-15
      • 2015-02-05
      • 2018-12-16
      • 2016-12-11
      • 2014-12-18
      • 2021-02-23
      • 2013-05-22
      • 2015-06-18
      • 2022-01-06
      相关资源
      最近更新 更多