使用cqlsh和ssl

时间:2016-10-21 14:37:01

标签: ssl cassandra datastax cqlsh

我在我的cassandra节点中启用了ssl加密,我试图找出如何使用cssh与ssl连接到我的节点:

当我运行./cqlsh --ssl时,我收到以下错误:

Validation is enabled; SSL transport factory requires a valid certfile to be specified. Please provide path to the certfile in [ssl] section as 'certfile' option in /root/.cassandra/cqlshrc (or use [certfiles] section) or set SSL_CERTFILE environment variable.

我按照https://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureCqlshSSL_t.html上的链接:

[authentication]
username = fred
password = !!bang!!$

我保留在根文件夹中,以便任何用户都可以登录并访问公共文件夹(而不是在我的用户目录中)。但是在这种情况下密码是什么?我需要输入密码吗?!

certfile = ~/keys/node0.cer.pem

我是否需要将此证书文件添加到cassandra的信任库中,或者我可以只添加cassandra节点证书本身吗?

我正在使用Cassandra 2.2.7。

1 个答案:

答案 0 :(得分:2)

完成这项工作需要做一些事情:

  

但是在这种情况下密码是什么?我需要输入密码吗?!

在cqlshrc文件中,这是指用于身份验证/授权的用户名和密码。你真的不需要在这里添加它。如果不这样做,请记住在cqlsh命令行上指定-u username -p password标志。

  

我是否需要将此证书文件添加到cassandra的信任库中,或者我可以只添加cassandra节点证书本身。

对于客户端到节点SSL,您实际上不需要使用信任库。

如果您按照上述文档中的步骤操作,则您应该已在密钥库文件中拥有证书的私钥部分。然后,您将该证书的公共部分导出到文件中。然后,您可以将该文件转换为PKCS12文件,以便与cqlsh一起使用。根据您在上面使用的文件名判断,看起来您已经这样做了。

举个例子,这是一个应该连接到2.2.x集群的示例cqlshrc文件:

[connection]
factory = cqlshlib.ssl.ssl_transport_factory

[ssl]
certfile = ~/certs/dev-cluster1.cer.pem
validate = false

[authentication]
username = cassuser
password = 12345

确保您设置ssl_transport_factory