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

注意

这个注释要打开!!!

相关推荐
进击的荆棘几秒前
Linux系统——库的原理与制作之制作和使用动静态库
linux·动静态库
论文复现现场1 分钟前
8卡 A100 服务器哪里租?NVLink、RDMA 与 NCCL 验收指南
linux·服务器·php·分布式训练·rdma·nvlink·nccl
派小心.3 分钟前
多端数据分析平台的漏斗可以跨端搭建吗?5 步搭出跨端转化漏斗
大数据·运维·服务器·前端·数据分析
小小的木头人27 分钟前
CentOS 7.9 离线安装 NVIDIA Container Toolkit:1.14.0 与 1.20.1 两种版本方案
linux·运维·centos
哭哭啼31 分钟前
Linux 资源紧缺模拟:CPU、内存、磁盘与文件描述符压力测试
linux·运维·压力测试
等我调个Bug1 小时前
Linux基本指令
linux·服务器
_upupup10 小时前
Linux的调试工具——gdb/cgdb
linux·服务器
JeJe同学10 小时前
Docker镜像导入、容器启动
linux·运维·docker
Jason_zhao_MR10 小时前
Linux与实时控制如何兼得
linux·嵌入式硬件·机器人·工业控制
闲云野鹤在人间11 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算