SSL/TSL配置 集群节点间通信加密还有客户端

集群节点之间加密通信

节点1每个节点独立生成自己的密钥库

bash 复制代码
cd /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

keytool -genkeypair -alias 168.1.88.85 -keyalg RSA -keysize 2048 \
  -dname "cn=168.1.88.85,ou=test,o=tongzk,l=bj,st=bj,c=cn" \
  -keypass 123456 -keystore keystore.jks \
  -storepass 123456 -validity 3650

keytool -exportcert -alias 168.1.88.85 -keystore keystore.jks \
  -file 168.1.88.85.cer -rfc -storepass 123456

节点2

bash 复制代码
cd /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

keytool -genkeypair -alias 168.1.88.86 -keyalg RSA -keysize 2048 \
  -dname "cn=168.1.88.86,ou=test,o=tongzk,l=bj,st=bj,c=cn" \
  -keypass 123456 -keystore keystore.jks \
  -storepass 123456 -validity 3650

keytool -exportcert -alias 168.1.88.86 -keystore keystore.jks \
  -file 168.1.88.86.cer -rfc -storepass 123456

节点3

bash 复制代码
cd /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

keytool -genkeypair -alias 10.10.83.95 -keyalg RSA -keysize 2048 \
  -dname "cn=10.10.83.95,ou=test,o=tongzk,l=bj,st=bj,c=cn" \
  -keypass 123456 -keystore keystore.jks \
  -storepass 123456 -validity 3650

keytool -exportcert -alias 10.10.83.95 -keystore keystore.jks \
  -file 10.10.83.95.cer -rfc -storepass 123456

三、收集证书到一台机器(选 85)

把 86 和 95 的证书传到 85

bash 复制代码
# 在 85 上执行
scp root@168.1.88.86:/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/168.1.88.86.cer /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

scp root@10.10.83.95:/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/10.10.83.95.cer /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

在 85 上生成共用信任库

bash 复制代码
cd /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

keytool -importcert -alias 168.1.88.85 -file 168.1.88.85.cer \
  -keystore truststore.jks -storepass 123456 -noprompt

keytool -importcert -alias 168.1.88.86 -file 168.1.88.86.cer \
  -keystore truststore.jks -storepass 123456 -noprompt

keytool -importcert -alias 10.10.83.95 -file 10.10.83.95.cer \
  -keystore truststore.jks -storepass 123456 -noprompt

# 验证
keytool -list -keystore truststore.jks -storepass 123456

分发信任库到所有节点

bash 复制代码
# 在 85 上执行
scp truststore.jks root@168.1.88.86:/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/
scp truststore.jks root@10.10.83.95:/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/

五、配置 tongzk.cfg(三个节点内容相同)

bash 复制代码
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
sslQuorum=true
ssl.quorum.keyStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.quorum.keyStore.password=123456
ssl.quorum.trustStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.quorum.trustStore.password=123456
ssl.quorum.hostnameVerification=false
ssl.quorum.enabledProtocols=TLSv1.2,TLSv1.3

六.重启所有节点

bash 复制代码
# 每个节点执行
/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/bin/tongzk-server.sh stop
sleep 3
/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/bin/tongzk-server.sh start

验证

bash 复制代码
# 查看日志确认 SSL 生效
grep "Using TLS encrypted quorum communication" /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/logs/tongzk.out

# 查看是否有 SSL_NULL_WITH_NULL_NULL
grep "SSL_NULL_WITH_NULL_NULL" /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/logs/tongzk.out
bash 复制代码
grep "Using TLS encrypted quorum communication" /home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/logs/tongzk*.out

说明整个集群加密成功

客户端与服务端加密通信

tongzk.cfg168.1.88.85 node2

bash 复制代码
# 强制切换为Netty通信工厂(SSL必备,不可省略)
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
# 启用集群节点间SSL加密
sslQuorum=true
# 密钥库路径与密码(绝对路径,避免相对路径失效)
ssl.quorum.keyStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.quorum.keyStore.password=123456
# 信任库路径与密码
ssl.quorum.trustStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.quorum.trustStore.password=123456
# 生产环境强制开启主机名校验,测试环境可临时关闭(严禁生产使用)
ssl.quorum.hostnameVerification=false
# 集群通信SSL协议版本,适配高版本JDK,禁用老旧协议 (低于JDK 11的jdk不支持TLSv1.3,可升级jdk或只配置TLSv1.2)
ssl.quorum.enabledProtocols=TLSv1.2,TLSv1.3
#新增客户端
# 强制切换为Netty通信工厂(SSL必备,不可省略)
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
# 客户端加密专属端口,必填项,默认推荐2182,可自定义
secureClientPort=2182
# 客户端通信密钥库配置,复用集群节点证书,必填
ssl.keyStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.keyStore.password=123456
# 客户端通信信任库配置,必填
ssl.trustStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.trustStore.password=123456
# 限定安全协议版本,禁用老旧不安全协议,生产必配(低于JDK 11的jdk不支持TLSv1.3,可升级jdk或只配置TLSv1.2)
ssl.enabledProtocols=TLSv1.2,TLSv1.3

# 是否需要客户端双向验证(need:需要双向验证,none:单向认证)
ssl.clientAuth=none

############################## 混合模式配置(过渡阶段使用) ##############################
# 保留原有明文端口2181,兼容未升级的存量客户端,过渡完成后注释
clientPort=2181

168.1.88.86 node3

bash 复制代码
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
# 启用集群节点间SSL加密
sslQuorum=true
# 密钥库路径与密码(绝对路径,避免相对路径失效)
ssl.quorum.keyStore.location=/home/shijm/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.quorum.keyStore.password=123456
# 信任库路径与密码
ssl.quorum.trustStore.location=/home/shijm/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.quorum.trustStore.password=123456
# 生产环境强制开启主机名校验,测试环境可临时关闭(严禁生产使用)
ssl.quorum.hostnameVerification=false
# 集群通信SSL协议版本,适配高版本JDK,禁用老旧协议 (低于JDK 11的jdk不支持TLSv1.3,可升级jdk或只配置TLSv1.2)
ssl.quorum.enabledProtocols=TLSv1.2,TLSv1.3
#新增客户端
# 强制切换为Netty通信工厂(SSL必备,不可省略)
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
# 客户端加密专属端口,必填项,默认推荐2182,可自定义
secureClientPort=2182
# 客户端通信密钥库配置,复用集群节点证书,必填
ssl.keyStore.location=/home/shijm/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.keyStore.password=123456
# 客户端通信信任库配置,必填
ssl.trustStore.location=/home/shijm/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.trustStore.password=123456
# 限定安全协议版本,禁用老旧不安全协议,生产必配(低于JDK 11的jdk不支持TLSv1.3,可升级jdk或只配置TLSv1.2)
ssl.enabledProtocols=TLSv1.2,TLSv1.3

# 是否需要客户端双向验证(need:需要双向验证,none:单向认证)
ssl.clientAuth=none

############################## 混合模式配置(过渡阶段使用) ##############################
# 保留原有明文端口2181,兼容未升级的存量客户端,过渡完成后注释
clientPort=2181

10.10.83.95 node1

bash 复制代码
# 强制切换为Netty通信工厂(SSL必备,不可省略)
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
# 启用集群节点间SSL加密
sslQuorum=true
# 密钥库路径与密码(绝对路径,避免相对路径失效)
ssl.quorum.keyStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.quorum.keyStore.password=123456
# 信任库路径与密码
ssl.quorum.trustStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.quorum.trustStore.password=123456
# 生产环境强制开启主机名校验,测试环境可临时关闭(严禁生产使用)
ssl.quorum.hostnameVerification=false
# 集群通信SSL协议版本,适配高版本JDK,禁用老旧协议 (低于JDK 11的jdk不支持TLSv1.3,可升级jdk或只配置TLSv1.2)
ssl.quorum.enabledProtocols=TLSv1.2,TLSv1.3
#新增客户端
# 强制切换为Netty通信工厂(SSL必备,不可省略)
serverCnxnFactory=com.tongtech.tongzk.server.NettyServerCnxnFactory
# 客户端加密专属端口,必填项,默认推荐2182,可自定义
secureClientPort=2182
# 客户端通信密钥库配置,复用集群节点证书,必填
ssl.keyStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/keystore.jks
ssl.keyStore.password=123456
# 客户端通信信任库配置,必填
ssl.trustStore.location=/home/shijm/zk/tongtech-tongzk-2.0.1.0-bin/conf/truststore.jks
ssl.trustStore.password=123456
# 限定安全协议版本,禁用老旧不安全协议,生产必配(低于JDK 11的jdk不支持TLSv1.3,可升级jdk或只配置TLSv1.2)
ssl.enabledProtocols=TLSv1.2,TLSv1.3

# 是否需要客户端双向验证(need:需要双向验证,none:单向认证)
ssl.clientAuth=none

############################## 混合模式配置(过渡阶段使用) ##############################
# 保留原有明文端口2181,兼容未升级的存量客户端,过渡完成后注释
clientPort=2181

注意

这个注释要打开!!!

相关推荐
楚枫默寒7 小时前
Linux 编辑文件后自动添加修改日期
linux·运维·bash
2601_961194029 小时前
27考研刘晓艳单词pdf
linux·sql·ubuntu·华为·pdf·.net
2023自学中11 小时前
imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放
linux·音视频·嵌入式·开发板
shandianchengzi11 小时前
【记录】Ghidra|Ubuntu 26.04 下 Ghidra 界面缩放完整指南
linux·ubuntu·逆向·ghidra
Soari11 小时前
Ubuntu 根分区文件系统损坏,系统启动时自动检查失败
linux·运维·ubuntu
杨云龙UP12 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
广州灵眸科技有限公司12 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Linux虚拟机准备
linux·运维·服务器
Lana学习中13 小时前
【运维杂记】连接不上远程服务器的问题处理
运维·服务器
1892280486113 小时前
NV023固态MT29F16T08GWLCEJ9-QBES:C
大数据·服务器·人工智能·科技·缓存
Peace13 小时前
【Prometheus】
linux·运维·prometheus