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

注意

这个注释要打开!!!

相关推荐
sxd20012 分钟前
Vmware和multicast
linux·windows·vmware·无线桥接·multicast
暴力求解4 分钟前
Linux网络---NAT代理服务、内网穿透
linux·网络·智能路由器
一直C23 分钟前
Linux系统编程|信号进阶 + SystemV IPC(消息队列、共享内存)
linux·c语言·开发语言·算法·青少年编程·vim
_F_y25 分钟前
Linux网络常用指令
linux·运维·网络
.Hypocritical.1 小时前
Tomcat本地部署+远程服务器部署超详细教程
java·服务器·tomcat
段一凡-华北理工大学1 小时前
高炉炉况智能诊断与预警实战~系列文章18:预警提前量问题:过程滞后与预测窗口的权衡
服务器·网络·人工智能·机器学习·高炉智能化·炉况预警·工业预警滞后
北风toto1 小时前
扩展操作码技术 · 详细笔记
运维·服务器·笔记·软件设计师
老当益壮梁奶奶2 小时前
Linux软件编程学习笔记(九):消息队列、共享内存与信号灯详解
linux·c语言·笔记·学习
小雪崩2 小时前
嵌入式学习 day35:进程间通信-消息队列、共享空间及有名信号量
linux·c语言·学习
Dovis(誓平步青云)2 小时前
拍视频前先把镜头想清楚:做一个分镜取景辅助器
android·java·服务器·javascript·人工智能