我在我的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。
答案 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
。