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

注意

这个注释要打开!!!

相关推荐
Web3探索者2 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo2 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10153 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao4 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3105 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒7 天前
TShark:Wireshark CLI 功能
linux
A小辣椒7 天前
TShark:基础知识
linux
AlfredZhao7 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao8 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi