2014-12-08 142 views
1

我正在嘗試使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#驅動程序連接,無濟於事。

任何想法如何使這項工作?

+0

描述你運行帶有''--ssl''標誌cqlsh? – 2014-12-09 18:49:58

+0

這是正確的答案,我認爲它會自動使用SSL,但實際上仍然需要--ssl標誌。你可以把它作爲答案發布,我會接受它。 – Flavien 2014-12-09 23:37:05

回答

2

你必須使用--ssl標誌作爲Documentation for 2.1

+2

該標誌是'--ssl'。所以,運行'cqlsh --ssl' – obai 2016-03-23 15:39:40

+0

這應該在答案中更新,不幸的是它只是單個字符編輯。 – Jaap 2017-11-16 08:32:03