![使用 openssl (而非 keytool) 的 Cassandra 安全性](https://linux22.com/image/669746/%E4%BD%BF%E7%94%A8%20openssl%20(%E8%80%8C%E9%9D%9E%20keytool)%20%E7%9A%84%20Cassandra%20%E5%AE%89%E5%85%A8%E6%80%A7.png)
我看到了 Cassandra 文档。http://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureSSLCertificates_t.html
我发现这一行“必须使用 keytool 生成 SSL 证书”。
但是我有自签名 CA(easy-rsa openSSL),它为我提供了证书和密钥。我想使用这些证书和密钥来实现 Cassandra 客户端到节点的安全,然后我必须使用 cqlsh 进行通信。为此,要求是密钥库、证书和密钥。我试过了,但无法实现这一点。
答案1
Cassandra 似乎使用“java 本机”存储数据库格式(密钥库)来保存加密密钥、证书和证书密钥。使用上面提到的工具管理此数据库非常容易。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
我还可以推荐一些不错的 GUI 密钥库工具(用 Java 编写)http://www.keystore-explorer.org/如果你喜欢以图形方式管理
请注意,默认密钥库密码设置为“ changeit
”。建议您更改它。