zookeeper 开启ssl认证与客户端服务端通信方法 详细攻略

zookeeper 开启ssl认证与客户端服务端通信方法 详细攻略
前言
前置需求
1 修改zoo.cfg
2 修改zkCli.sh
3 客户端操作
客户端连接zk时需要添加如下配置
前言
最近公司有需求,zk集群必须添加ssl认证,网上找了很多方法,都不是很详细,在经过多番折腾之后,有了这篇文章

前置需求
要预先生成好客户端与服务端的ssl证书,参考我的另一篇文章
链接: ssl证书生成 详细流程

1 修改zoo.cfg
将clientPort替换为

secureClientPort=2281
1
并添加如下配置

serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory
ssl.keyStore.location= path/to/your/KeyStore.jks
ssl.keyStore.password= testpwd
ssl.trustStore.location= path/to/your/TrustStore.jks
ssl.trustStore.password= testpwd
1
2
3
4
5
2 修改zkCli.sh
在该文件第70行左右添加如下配置

export CLIENT_JVMFLAGS="
-Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
-Dzookeeper.client.secure=true
-Dzookeeper.ssl.hostnameVerification=false
-Dzookeeper.ssl.keyStore.location=path/to/your/KeyStore.jks
-Dzookeeper.ssl.keyStore.password=testpwd
-Dzookeeper.ssl.trustStore.location=path/to/your/TrustStore.jks
-Dzookeeper.ssl.trustStore.password=testpwd
-Dzookeeper.ssl.hostnameVerification=false"
1
2
3
4
5
6
7
8
9
至此 服务端操作就全部完成了,可以重启zk节点,使用zkCli.sh脚本登录zk进行crud操作了

3 客户端操作
自己在客户端按照ssl证书生成 详细流程的方法生成keystore和cert
将cert提交给服务端,服务端使用如下命令导入

keytool -import -alias 客户端名字 -file 客户端证书.cer -keystore truststore路径
1
使用服务端提供的cert,同样用上面的指令将证书导入truststore

这一步是将客户端与服务端双方的cert证书导入到对方的truststore文件中去

客户端连接zk时需要添加如下配置
zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
zookeeper.client.secure=true
zookeeper.ssl.hostnameVerification=false
zookeeper.ssl.keyStore.location=path/to/your/KeyStore.jks
zookeeper.ssl.keyStore.password=testpwd
zookeeper.ssl.trustStore.location=path/to/your/TrustStore.jks
zookeeper.ssl.trustStore.password=testpwd
zookeeper.ssl.hostnameVerification=false"
1
2
3
4
5
6
7
8
使用原生javaApi 可以参考下面的配置方法来创建zk连接

ZKClientConfig config = new ZKClientConfig();

config.setProperty("zookeeper.clientCnxnSocket", "org.apache.zookeeper.ClientCnxnSocketNetty");
config.setProperty("zookeeper.client.secure", "true");
config.setProperty("zookeeper.ssl.keyStore.location", "/path/to/your/KeyStore.jks");
config.setProperty("zookeeper.ssl.keyStore.password", "pwd");
config.setProperty("zookeeper.ssl.trustStore.location",  "/path/to/yourtruststore.jks");
config.setProperty("zookeeper.ssl.trustStore.password", "pwd");
config.setProperty("zookeeper.ssl.hostnameVerification", "false");

ZooKeeper connect = new ZooKeeper("loLcalhost:2181", 3000, this.wh,config);
1
2
3
4
5
6
7
8
9
10
11
如使用其它api,则只需要在zk连接之前使用

System.setProperty()
1
将上述配置添加即可
————————————————
版权声明:本文为CSDN博主「LastSong_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LastSong_/article/details/115182219

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值