使用SSL连接cqlsh

5

我已经在我的Cassandra节点上启用了SSL加密,现在我正在尝试通过SSL连接到我的节点,使用的是cqlsh:

当我运行./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

我需要将该 certfile 添加到 cassandra 的信任库中吗?还是只需添加 cassandra 节点证书本身?

我正在使用 Cassandra 2.2.7。

1个回答

4

为使此功能正常工作,需要一些东西:

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

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

我需要将此certfile添加到cassandra的信任存储区中,还是只需添加cassandra节点证书本身即可。

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

如果您按照上述文档中的步骤操作,则应已经在keystore文件中拥有证书的私钥部分。然后,您将导出该证书的公共部分到一个文件中。然后,您将将该文件转换为PKCS12文件以供cqlsh使用。从您使用的文件名来看,看起来您已经完成了这些步骤。

以下是一个示例cqlshrc文件,可连接到2.2.x集群:

[connection]
factory = cqlshlib.ssl.ssl_transport_factory

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

[authentication]
username = cassuser
password = 12345

请确保设置了ssl_transport_factory


有趣的是,如果我的用户名和密码不正确,它仍然可以工作!但如果它缺失,它仍然会要求输入用户名和密码。你认为问题可能出在哪里? - user1692342
如果我们有一个多节点的Cassandra集群,那么在连接到集群时我们需要使用哪个节点的公共证书呢? 我想使用DataStax驱动程序连接到集群。或者任何一个节点的证书都可以工作,因为每个节点都会将其他节点的公共证书加载到其信任存储中。 - undefined
在理论上,由同一证书颁发机构(CA)颁发的任何证书都应该能够连接。因此,如果您的企业自己颁发证书,您可以使用其中一个节点证书,甚至是全新的证书,都应该没有问题。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接