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

注意

这个注释要打开!!!

相关推荐
189228048611 小时前
NV232固态闪存MT29F32T08GWLBHD6-TES:B
大数据·服务器·人工智能·科技·缓存
Codigger官方1 小时前
Ubuntu 与 Fedora:两大 Linux 发行版怎么选?
linux·运维·ubuntu
189228048612 小时前
NV231美光闪存MT29F32T08GWLBHD6-MES:B
大数据·服务器·人工智能·科技·缓存
程序员老舅2 小时前
Linux:谁把根目录卸载了?
linux·c++·容器·linux内核·文件系统·根目录
YuanDaima20482 小时前
云计算基础与容器技术演进
java·服务器·人工智能·python·深度学习·云计算·个人开发
东北甜妹2 小时前
K8s pod优先级 和 HPA水平扩缩容
linux·运维·服务器
无限进步_2 小时前
【Linux】网络发展背景与协议分层模型
linux·运维·网络
比昨天多敲两行2 小时前
Linux命令行参数,环境变量和程序地址空间
linux·运维·服务器
長安一片月2 小时前
snort安装与使用
linux·运维·服务器