首页 > 其他分享 >RocketMQ 5.0 如何配置TLS加密传输?

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

时间:2023-05-19 17:55:37浏览次数:41  
标签:5.0 加密传输 tls ca Broker server Namesrv TLS rocketmq

本文作者:李伟,社区里大家叫小伟,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签名证书

  1. 生成公私密钥。提供给客户端-服务端加密传输使用
openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csr

Generating a 2048 bit RSA private key

生成加密密钥对

  1. 生成Namesrv、Broker加密密钥对,并且签发Namesrv、Broker证书
openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csrGenerating a 2048 bit RSA private key

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

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

  1. 添加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

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版本差不多, 基本都可以用。

标签:5.0,加密传输,tls,ca,Broker,server,Namesrv,TLS,rocketmq
From: https://www.cnblogs.com/RocketMQ/p/17415930.html

相关文章

  • TLS1.2握手流程分析(RSA,ECDHE),和TLS1.3区别
    目录一、加密算法简介1.2RSA简要流程1.1ECDHE简要流程二、TLS1.2握手消息简介三、TLS1.2RSA流程四、TLS1.2ECDHE流程五、TLS1.2和TLS1.3区别5.1更快的访问速度5.2更强的安全性六、wareshark抓包验证TLS1.2流程6.1搭建httpsserver(springboot)6.2请求并抓包6.3抓包结果分......
  • 第13章 使用Bind提供域名解析服务。 dns 正向反向解析 主从 dns加密传
    章节简述: 本章讲解了DNS域名解析服务的原理以及作用,介绍了域名查询功能中正向解析与反向解析的作用,并通过实验的方式演示了如何在DNS主服务器上部署正、反解析工作模式,以便让大家深刻体会到DNS域名查询的便利以及强大。本章还介绍了如何部署DNS从服务器以及DNS缓存服务器来提......
  • 最新Android开发环境(Eclipse+ADT+Android 5.0)
     一、一切由运行时错误引起dalvikvmCouldnotfindclass'引用包.类',referencedfrommethod... 其实在编译时也会见到如下错误:      [dx]       [dx]troubleprocessing:      [dx]badclassfilemagic(cafebabe)orversion(0033.00......
  • 前后端使用 RSA非对称加密传输数据
    使用思路流程:后端生成公钥、私钥。前端获取公钥后使用公钥对明文加密,然后后端使用私钥对密文解密。前端引用:jsencrypt.min.jspackagecom.ruoyi.common.utils;importorg.apache.commons.codec.binary.Base64;importorg.apache.commons.collections.MapUtils;importorg.slf4j.L......
  • windows11上安装PL-SQL Developer 15.0.3.2059
    注:连接的oracle服务端是oracle12c1.环境准备(1).下载oracle客户端下载以下版本均可:此处我下载的是instantclient-basic-nt-12.2.0.1.0.zip(2).下载PL-SQLDeveloper15.0.3.2059下载地址:https://www.jb51.net/softs/820654.html2.解压配置oracle客户端首先在磁盘上创建D......
  • HTTPS--TLS 总结归纳
    SSL/TLS握手详细过程"clienthello"消息:客户端通过发送"clienthello"消息向服务器发起握手请求,该消息包含了客户端所支持的TLS版本和密码组合以供服务器进行选择,还有一个"clientrandom"随机字符串。"serverhello"消息:服务器发送"serverhello"消息对客户端进行回应,该消......
  • 优捷易装机助理 5.23.05.01 绿色单文件版
    更新流水:2023.05.01:首个自改官方 5.23.05.01最新正式版本修改内容:by.星野怜去除程序所有自校验;(首创)禁用第一次打开程序时弹出提示对话框;(首创)禁用程序检测更新并清除关于版本"检查更新"选项;(首创)禁用程序所有联网功能(包括"在线重装","软件大全");内部禁用设置主页及其相......
  • 【2023.05.07 模拟赛】T3 树数树
    Description牛牛有一棵\(n\)个点的有根树,根为1。我们称一个长度为\(m\)的序列\(a\)是好的,当且仅当:\(\foralli\in(1,m],\mathrm{a}_{\mathrm{i}}\)为\(\mathrm{a}_{\mathrm{i}-1}\)的祖先或\(\mathrm{a}_{\mathrm{i}-1}\)是\(\mathrm{a}_{\mathrm{i}}\)的......
  • 解决“未能创建 SSL/TLS 安全通道”异常
    ServicePointManager.SecurityProtocol=SecurityProtocolType.Ssl3|SecurityProtocolType.Tls|SecurityProtocolType.Tls11|SecurityProtoco......
  • 【2023.05.09】厦门无线电A证考试体验(无线电台执照)
    考这个证书主要是上班事情不多,所以业余时间学了一下无线电三月份去厦门无线电管理局考试,三天前接到无管局接到电话今天才刚拿到证,也就是说考完可能要等一个月半才能拿到证书进去无管局,会先在会议室抽号码排队,会议室收拾得很干净,奖牌也很多因为我和同学一起去,所以我们是连号......