卡桑德拉安全使用openssl(而不是keytool)

我看到了Cassandra文档。 http://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureSSLCertificates_t.html

我发现这行“SSL证书必须使用keytool生成”。

但是我有我的自签名CA(easy-rsa openSSL),即给我证书和密钥。 我想使用这些证书和Cassandra客户端的密钥来节点安全,然后我必须使用cqlsh进行通信。 为此,需求是密钥库,证书和密钥。 我尝试过,但我无法做到这一点。

看起来Cassandra使用“java原生”存储数据库格式(密钥库)来保存encryption密钥,证书和证书密钥。 用上面提到的工具来pipe理这个数据库是相当容易的。 Oracle文档页面提供了全面的文档https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html

对于你的具体情况,你需要按照这些步骤。

1)将您的RootCA证书导入到受信任的机构。

keytool -import -trustcacerts -alias rootCA -file rootCA.crt -keystore keystore.jks 

2)将您的密钥对导入存储数据库。 keytool最简单的方法是转换为pkcs12格式,然后导入到密钥库

 openssl pkcs12 -export -in mycert.pem -inkey mykey.pem > mykey.p12 

然后将此存储转换为Java密钥存储:

 keytool -importkeystore -srcstoretype pkcs12 -srckeystore mykey.p12 -destkeystore mykeystore.jks 

我也可以build议很好的GUI密钥库工具(用java编写) http://www.keystore-explorer.org/如果你喜欢用graphics方式pipe理它

请注意,默认密钥库密码设置为“ changeit ”。 鼓励你改变它。