我正在尝试使用datastax cassandra驱动程序连接到启用了SSL的cassandra节点,如下所示:
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
import ssl
ip = <ip>
ap = PlainTextAuthProvider(username=<username>, password=<password>)
ssl_options = {
'ca_certs': <path to PEM file>,
'ssl_version': ssl.PROTOCOL_TLSv1
}
cluster = Cluster([ip], auth_provider=ap, ssl_options=ssl_options)
session = cluster.connect()
我可以使用pycassa
成功连接到该节点,但我尝试切换到使用datastax driver
。
以上代码抛出以下异常:
NoHostAvailable: ('Unable to connect to any servers', {<ip>: error(1, u"Tried connecting to [(<ip>, <port>)]. Last error: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:590)")})
我知道服务器接受PROTOCOL_TLSv1,因为它是pycassa中的默认协议。我不明白我在这里做错了什么......
答案 0 :(得分:2)
尝试在未协商SSL的套接字上使用SSL连接时,通常会发生此错误。
确认服务器中已启用SSL,以及您要连接的端口。我认为这应该在服务器系统日志中很明显。