cassandra 启用SSL(client-to-node)

cassandra中文资料挺少的,记录一下最近的操作,英文不好的同学可以参考.

这个只适合开发环境,非CA.

1. 服务器端生成密钥对

keytool -genkey -keyalg RSA -alias node1 -keystore node1.keystore
-storepass cassandra -keypass cassandra
-dname "CN=192.168.86.29, OU=None, O=None,
L=Scottsdale, C=USA"
2.生成证书

keytool -export -alias node1 -file node1.cer -keystore node1.keystore

3.生成truststore (用于客户端 即我们的程序)

keytool -import -v -trustcacerts -alias node1 -file node1.cer -keystore node2.truststore

更改casandra.yaml配置文件
client_encryption_options:
enabled: false
optional: false
keystore: conf/node1.keystore
keystore_password: cassandra

4.更改客户端代码

CqlSessionBuilder cqlSessionBuilder = CqlSession.builder()
        .withAuthCredentials(this.userName, this.password)
        .addContactEndPoints(getContactPointsList())
        .withLocalDatacenter(this.localDCName)
        .withConfigLoader(configLoader)
        .withKeyspace(this.keySpaceName)
        .addTypeCodecs(new TimestampCodec());
if (null != encryptionMode) {
 
    if (null != trustStore && null != trustStorePassword) {
        KeyStore ks = KeyStore.getInstance(STORE_TYPE);
        InputStream trustStoreStream = new FileInputStream("C:\node2.truststore");
        ks.load(trustStoreStream, "cassandra".toCharArray());
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init(ks);

        SSLContext sslContext = SSLContext.getInstance(encryptionMode.trim().toUpperCase());
        sslContext.init(null, tmf.getTrustManagers(), new SecureRandom());
        cqlSessionBuilder.withSslContext(sslContext);
    } else {
        logger.warn("TRUST_STORE and TRUST_STORE_PASSWORD must be non-null value");
    }
}
session = cqlSessionBuilder.build();

只是一个记录,里面没有说明.不过步骤挺完整.根据这个可以跑起来.也可以参考datastat上的文档
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值