【问题标题】:Using cqlsh with ssl将 cqlsh 与 ssl 一起使用
【发布时间】:2017-03-03 22:18:16
【问题描述】:

我在我的 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

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

我正在使用 Cassandra 2.2.7。

【问题讨论】:

    标签: ssl cassandra datastax cqlsh


    【解决方案1】:

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

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

    在您的 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

    【讨论】:

    • 有趣的是,如果我的用户名和密码不正确,它仍然有效!但如果它丢失了,它仍然会询问用户名、密码。您认为可能是什么问题?
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2018-05-25
    • 2017-07-14
    • 2018-09-11
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多