我正在尝试使SSL(客户端到节点)在Cassandra 2.1.2上工作。使用cqlsh无法使用SSL连接到Cassandra
我已根据说明here创建了密钥库和信任库。然后,我已经更新cassandra.yaml这样:
client_encryption_options:
enabled: true
keystore: /etc/cassandra/security/.keystore
keystore_password: ********
# require_client_auth: false
# Set trustore and truststore_password if require_client_auth is true
truststore: /etc/cassandra/security/.truststore
truststore_password: ********
# More advanced defaults below:
# protocol: TLS
# algorithm: SunX509
# store_type: JKS
# cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
我试图用cqlsh连接,但是我得到以下错误:
Connection error: ('Unable to connect to any servers', {'192.168.0.16': ConnectionShutdown('Connection <AsyncoreConnection(140569820674832) 192.168.0.16:9042 (closed)> is already closed',)})
我cqlshrc文件看起来像这样:
[connection]
hostname = 192.168.0.16
port = 9042
factory = cqlshlib.ssl.ssl_transport_factory
[ssl]
validate = false
certfile = /home/flavien/localhost.pem
对于certfile,我试过了pem和crt文件,这没什么区别。
卡桑德拉日志中没有证据 - 没有错误,没有任何证据。
我的Java版本是这样的:
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
而且我已经安装了Java加密扩展(JCE)无限强度权限策略文件。
我也尝试使用DevCenter和C#驱动程序连接,无济于事。
任何想法如何使这项工作?
描述你运行带有''--ssl''标志cqlsh? – 2014-12-09 18:49:58
这是正确的答案,我认为它会自动使用SSL,但实际上仍然需要--ssl标志。你可以把它作为答案发布,我会接受它。 – Flavien 2014-12-09 23:37:05