2016-10-21 58 views
3

我已經啓用SSL加密在我的卡桑德拉節點,我試圖找出如何連接到使用cqlsh使用SSL我的節點:使用cqlsh使用SSL

當我運行./cqlsh --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. 

我也跟着上https://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureCqlshSSL_t.html鏈接:我保持在根文件夾

[authentication] 
username = fred 
password = !!bang!!$ 

,使任何用戶都可以登錄,並且可以訪問普通文件夾(而不是在我的用戶目錄中)。然而,在這種情況下密碼是什麼?我需要輸入密碼嗎?

certfile = ~/keys/node0.cer.pem 

我需要把這個certFile中添加到Cassandra的信任,或者我可以再補充卡桑德拉節點證書本身?

我正在使用Cassandra 2.2.7。

回答

2

有使這項工作需要幾件事情:

However what would be the password in this case? Do I need to put my password?!

裏面你cqlshrc文件,這指的是認證/授權的用戶名和密碼。你不需要在這裏添加它。如果您不這樣做,請記住在cqlsh命令行上指定-u username -p password標誌。

Will I need to add this certfile to the cassandra's truststore, or can I just add cassandra nodes certificate itself.

對於客戶到節點的SSL,你並不真的需要用信任。

如果您按照上述文檔中的步驟進行操作,則應該在密鑰庫文件中擁有證書的私鑰部分。然後,您會將該證書的公共部分導出到文件中。然後您將該文件轉換爲PKCS12文件以便與cqlsh一起使用。從上面使用的文件名判斷,看起來你已經完成了。

作爲一個例子,這裏是一個應該連接到2.2.x的集羣爲例cqlshrc文件:

[connection] 
factory = cqlshlib.ssl.ssl_transport_factory 

[ssl] 
certfile = ~/certs/dev-cluster1.cer.pem 
validate = false 

[authentication] 
username = cassuser 
password = 12345 

確保您正在設置ssl_transport_factory

+0

有趣的是,如果我的用戶名和密碼不正確,它仍然有效!但是如果缺少它,它仍然要求輸入用戶名和密碼。你認爲可能是什麼問題? – user1692342