前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RocketMQ5.0 如何配置TLS加密传输?

RocketMQ5.0 如何配置TLS加密传输?

作者头像
小伟
发布2023-10-08 09:28:51
4341
发布2023-10-08 09:28:51
举报
文章被收录于专栏:魔都程序缘魔都程序缘

01 传输架构图

Namesrv:5.1.0

Broker:5.1.0

Dashboard:1.0.1-SNAPSHOT

02 准备Namesrv、Broker、Client的ca证书、密钥

以下全部操作在的目录在:/etc/rocketmq, 并且Namesrv、Broker、Dashboard在同一个机器上, 实际操作时, dashboard或者客户端可以是其他的机器

2.1. 生成ca签名证书

  • 填写与重复填写ca证书密码。实际填写的时候是输入的字符是看不见的。
  • 填写其他信息, 不填的话使用 “.”
代码语言:javascript
复制
openssl req -newkey rsa:2048 -keyout ca_rsa_private.pem -x509 -days 365 -out ca.pem

2.2 生成公私密钥。提供给客户端-服务端加密传输使用

代码语言:javascript
复制
openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csr
Generating a 2048 bit RSA private key

2.3. 生成Namesrv、Broker加密密钥对,并且签发Namesrv、Broker证书

代码语言:javascript
复制
openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csr
Generating a 2048 bit RSA private key

2.4. 打包并加密Namesrv、Broker私钥

2.5. 添加Namesrv、Broker使用的tls配置文件

  • tls-broker.properties

代码语言:javascript
复制
tls.test.mode.enable=false
tls.server.need.client.auth=none
tls.server.keyPath=/etc/rocketmq/server.key
tls.server.keyPassword=123456
tls.server.certPath=/etc/rocketmq/server.pem
tls.client.authServer=false
tls.client.trustCertPath=/etc/rocketmq/ca.pem
代码语言:javascript
复制
tls.test.mode.enable=false
tls.server.need.client.auth=none
tls.server.keyPath=/etc/rocketmq/server.key
tls.server.keyPassword=123456
tls.server.certPath=/etc/rocketmq/server.pem
代码语言:javascript
复制
tls.client.trustCertPath=/etc/rocketmq/ca.pem

至此,我们得到了全部的tls配置文件:

3. 修改启动脚本

3.1. 修改namesrv启动脚本

代码语言:javascript
复制
vim bin/runserver.sh

3.2 修改broker启动配置

3.2.1 修改broker启动脚本, 设置jvm支持tls

代码语言:javascript
复制
vim bin/runbroker.sh

3.2.2 添加broker.conf

代码语言:javascript
复制
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr = 127.0.0.1:9876

3.3 修改dashboard配置

3.3.1 修改namesrv地址

3.3.2 打开tls开关

代码语言:javascript
复制
vim rocketmq-dashboard-1.0.1-SNAPSHOT.jar

说明:如果是客户端生产消费,设置如下:

4. 启动Namesrv,Broker,Dashboard

4.1. 启动namesrv

代码语言:javascript
复制
nohup sh bin/mqnamesrv &

4.2. 启动broker

代码语言:javascript
复制
nohup sh bin/mqbroker -c conf/broker.conf &

4.3. 启动dashboard

代码语言:javascript
复制
java -Dtls.client.authServer=true -Dtls.enable=true -Dtls.test.mode.enable=false -Dtls.config.file=/etc/rocketmq/tls-client.properties -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar

5. tcpdump抓包验证

6. 问题

  • 抓包结果中, 为什么还有TCP协议呢?
  • 客户端可以通过设置:-Dtls.enable=true开启, 但是实际还是需要设置代码"producer.setUseTLS(useTls);" 或者 “consumer.setUseTLS(useTls);”, 为什么?

大家可以留言说说看!

7. 看看生成的最终文件到底是什么?

1. ca.pem

ca根证书

2. ca_rsa_private.pem

ca根证书的加密私钥

3. server.pem

使用跟证书签发的Namesrv、Broker的证书

4. server_rsa.key

Namesrv、Broker的加密私钥

5. server.csr

Namesrv、Broker的加密证书的公钥和用于辨别证书迁移机构的名称信息,

6. server.key

打包并加密后的Namesrv、Broker的私钥(server_rsa.key)

7. ca.srl

ca签发证书的序列号

8. tls-namesrv.properties

内容见上文, 是namesrv中netty识别的tls加密传输的配置

9. tls-broker.properties

内容见上文, 是broker中netty识别的tls加密传输的配置

10. tls-client.properties

内容见上文, 是client中netty识别的tls加密传输的配置

PS:RocketMQ的tls配置4.X版本和5.X版本差不多, 基本都可以用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-04 23:59:41,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 魔都程序缘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档