启用TLSv1.3的Cassandra 4.0.7通过cqlsh连接失败(驱动3.25.0)
问题解决:cqlsh连接启用TLSv1.3的Cassandra 4.0.7集群失败
核心原因
cqlsh依赖的Python版Cassandra驱动(cassandra-driver)版本过低,不支持TLSv1.3协议。你使用的Datastax Java驱动3.25.0已支持TLSv1.3,因此应用能正常连接,但cqlsh因驱动限制无法协商TLSv1.3。
解决方案
1. 升级Python版Cassandra驱动
TLSv1.3支持从cassandra-driver 3.26.0版本开始引入,需升级到该版本或更高兼容版本:
- 先检查当前驱动版本:
在cqlsh中执行:
或在Python环境中执行:SELECT cqlsh_version, driver_version FROM system.local;pip show cassandra-driver - 执行升级命令:
pip install --upgrade cassandra-driver>=3.26.0
2. 检查并修正cqlshrc配置
确保cqlshrc的[ssl]段正确指定TLSv1.3协议:
[ssl] certfile = /apache-cassandra/conf/your-cert.pem # 替换为你的证书路径 validate = true ssl_version = TLSv1.3
如果之前配置的是ssl_version = TLS,旧驱动可能只会协商到TLSv1.2,需明确指定TLSv1.3。
3. 验证系统OpenSSL版本
Python的ssl模块依赖系统OpenSSL,TLSv1.3要求OpenSSL版本≥1.1.1:
- 在Python中检查版本:
import ssl print(ssl.OPENSSL_VERSION) - 若版本低于1.1.1,需升级系统OpenSSL,或重新编译Python以链接新版OpenSSL。
验证
重新执行连接命令:
./cqlsh --debug --ssl --cqlshrc /apache-cassandra/conf/cqlshrc <IP_ADDRESS> 9042
此时应能成功协商TLSv1.3并连接集群。
内容的提问来源于stack exchange,提问作者kapil shewate
相关产品推荐
相关产品推荐

