我有一个运行3节点cassandra集群的Kubernetes。当我尝试从本地计算机连接到cqlsh时,它工作正常。但是在群集上启用SSL后,我看到以下错误。我尝试在我的本地计算机和kubernetes容器上设置cqlshrc,但是仍然存在相同的错误。有人可以帮我吗?
$ kubectl run -i --tty --restart=Never --rm --image cassandra cqlsh -- cqlsh cassandra-0.cassandra.default.svc.cluster.local -u cassandra -p password --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.
pod "cqlsh" deleted
pod default/cqlsh terminated (Error)
答案 0 :(得分:0)
请按照以下步骤进行故障排除
从本地主机检查远程节点证书(远程主机)的主题,有效性和发布人
回声| openssl s_client -showcerts -connect主机-远程:cassandra-ssl-port 2> / dev / null | openssl x509 -noout -subject -dates -issuer
检查cqlsh.cer.pem,它可能只有一个条目,并且主题为CN = host-local,这可能是您能够连接到本地主机但不能连接到远程主机的可能原因。
openssl x509 -text -noout -in cqlhrc文件/cqlsh.cer.pem中的trustore路径
您的信任库还应具有根证书/ CA证书,以通过成功验证来自远程节点的证书链来连接到远程主机。 您可能需要将根证书嵌入trutstore
请参阅this以在cassandra中应用ssl。