RocketMQ 5.0 如何配置TLS加密传输?

本文作者:李伟,社区里大家叫小伟,Apache RocketMQ Committer,RocketMQ Python客户端项目Owner ,Apache Doris Contributor,腾讯云RocketMQ开发工程师。

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或者客户端可以是其他的机器

1. 生成ca签名证书

填写与重复填写ca证书密码。实际填写的时候是输入的字符是看不见的。

openssl req -newkey rsa:2048 -keyout ca_rsa_private.pem -x509 -days 365 -out ca.pem
  • 填写其他信息, 不填的话使用 “.”

生成ca签名证书

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

openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csr

Generating a 2048 bit RSA private key

生成加密密钥对

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

openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csrGenerating a 2048 bit RSA private key

生成Namesrv、Broker密钥,签发证书

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

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

  • tls-broker.properties

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
  • tls-namesrv.properties

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.properties

tls.client.trustCertPath=/etc/rocketmq/ca.pem

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

全部配置文件

03 修改启动脚本

3.1 修改namesrv启动脚本

vim bin/runserver.sh

修改namesrv启动脚本

3.2 修改broker启动配置

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

vim bin/runbroker.sh

修改broker启动脚本

  • 添加broker.conf

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配置

  • 修改namesrv地址

修改namesrv地址

  • 打开tls开关

vim rocketmq-dashboard-1.0.1-SNAPSHOT.jar

修改dashboard配置

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

消费者开启tls开关

生产者开启tls开关

04 启动Namesrv,Broker,Dashboard

  • 启动namesrv

nohup sh bin/mqnamesrv &
  • 启动broker

nohup sh bin/mqbroker -c conf/broker.conf &
  • 启动dashboard

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

05 验证

  • tcpdump抓包验证

TLS抓包结果

  • rocketmq dashboad日志验证: ~/logs/rocketmqlogs/rocketmq_client.log

添加图片注释,不超过 140 字(可选)

06 问题:抓包结果中, 为什么还有TCP协议呢?

  • 抓包结果中, 为什么还有TCP协议呢?

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

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

  • ca.pemca根证书

  • ca_rsa_private.pemca根证书的加密私钥

  • server.pem使用跟证书签发的Namesrv、Broker的证书

  • server_rsa.keyNamesrv、Broker的加密私钥

  • server.csrNamesrv、Broker的加密证书的公钥和用于辨别证书迁移机构的名称信息

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

  • ca.srlca签发证书的序列号

1、tls-namesrv.properties

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

2、tls-broker.properties

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

3、tls-client.properties

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

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

资源下载链接为: https://pan.quark.cn/s/27aaeeaf622d 为了搭建和配置 RocketMQ 服务端,您需要准备以下资源和环境: Java 1.8:请务必安装 Java 1.8 版本(例如:jdk-8u40-windows-x64.exe)。其他版本可能会导致配置失败。 RocketMQ 安装包:下载并解压 RocketMQ 的安装包(如 rocketmq-all-4.2.0-bin-release)。 Maven:用于编译和安装可视化插件(如 maven-3.6.3)。 RocketMQ 可视化插件:下载 rocketmq-externals-master 文件,用于生成可视化管理工具 rocketmq-console-ng-1.0.0.jar(也可直接从网上下载该 jar 文件)。 Git:建议安装 Git,以方便后续操作。 在配置过程中,请注意以下要点: 所有文件(包括 JavaRocketMQ、Maven 等)应放置在路径中不含空格的文件夹内,例如在 C 盘创建一个名为“MQ”的文件夹,并将所有相关文件放入其中。 配置系统环境变量时,需添加 Java 和 Maven 的路径,以及设置 ROCKETMQ_HOME 指向 RocketMQ 的安装目录。 启动 RocketMQ 服务时,需先启动 NameServer,再启动 Broker,并确保不要关闭启动窗口。 对于可视化插件的配置,需修改 application.properties 文件中的端口和 RocketMQ 链接信息,并通过 Maven 编译生成 jar 文件后启动。 具体的安装和配置步骤,可参考以下教程: 消息队列 RocketMQ 并发量十万级 Windows 下 RocketMQ 安装部署教程 RocketMQ 安装 For Windows10(完整版) 通过以上资源和
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值