前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RocketMQ 5.0 如何配置TLS加密传输?

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

原创
作者头像
小伟
修改于 2023-05-24 08:39:32
修改于 2023-05-24 08:39:32
1.4K0
举报
文章被收录于专栏:魔都程序缘魔都程序缘

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签名证书
生成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证书

代码语言:shell
AI代码解释
复制
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca_rsa_private.pem -CAcreateserial -out server.pem
生成Namesrv、Broker密钥,签发证书
生成Namesrv、Broker密钥,签发证书

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

代码语言:text
AI代码解释
复制
 openssl pkcs8 -topk8 -v1 PBE-SHA1-RC4-128 -in server_rsa.key -out server.key

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

代码语言:txt
AI代码解释
复制
- tls-namesrv.properties

```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

代码语言:txt
AI代码解释
复制
- tls-client.properties

```properties

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

代码语言:txt
AI代码解释
复制
至此,我们得到了全部的tls配置文件:

![全部配置文件](https://ask.qcloudimg.com/developer-images/article/1137178/3pa0uyow74.png)

## 3. 修改启动脚本

### 3.1 修改namesrv启动脚本

```bash

vim bin/runserver.sh

代码语言:txt
AI代码解释
复制
![修改namesrv启动脚本](https://ask.qcloudimg.com/developer-images/article/1137178/z08ps3x6wq.png)

### 3.2 修改broker启动配置

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

```bash

vim bin/runbroker.sh

代码语言:txt
AI代码解释
复制
![修改broker启动脚本](https://ask.qcloudimg.com/developer-images/article/1137178/cxu8b2t33y.png)

1. 添加broker.conf

```properties

brokerClusterName = DefaultCluster

brokerName = broker-a

brokerId = 0

deleteWhen = 04

fileReservedTime = 48

brokerRole = ASYNC_MASTER

flushDiskType = ASYNC_FLUSH

namesrvAddr = 127.0.0.1:9876

代码语言:txt
AI代码解释
复制
### 3.3 修改dashboard配置

- 修改namesrv地址
![修改namesrv地址](https://ask.qcloudimg.com/developer-images/article/1137178/l2qwj8cu1n.png)
- 打开tls开关

```bash

vim rocketmq-dashboard-1.0.1-SNAPSHOT.jar

代码语言:txt
AI代码解释
复制
![修改dashboard配置](https://ask.qcloudimg.com/developer-images/article/1137178/hmehhuimal.png)

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

![消费者开启tls开关](https://ask.qcloudimg.com/developer-images/article/1137178/aqh06aw42f.png)

![生产者开启tls开关](https://ask.qcloudimg.com/developer-images/article/1137178/rs3lhl470a.png)

## 4. 启动Namesrv,Broker,Dashboard

1. 启动namesrv

```bash

nohup sh bin/mqnamesrv &

代码语言:txt
AI代码解释
复制
1. 启动broker

```bash

nohup sh bin/mqbroker -c conf/broker.conf &

代码语言:txt
AI代码解释
复制
1. 启动dashboard

```bash

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

代码语言:txt
复制

5. 验证

  • tcpdump抓包验证
TLS抓包结果
TLS抓包结果
  • rocketmq dashboad日志验证: ~/logs/rocketmqlogs/rocketmq_client.log

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

  • 抓包结果中, 为什么还有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的证书
  1. server_rsa.key Namesrv、Broker的加密私钥
  1. server.csr Namesrv、Broker的加密证书的公钥和用于辨别证书迁移机构的名称信息,
  1. server.key 打包并加密后的Namesrv、Broker的私钥(server_rsa.key)
  1. ca.srl ca签发证书的序列号
  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版本差不多, 基本都可以用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MCP(Model Context Protocol)配置安全方案:数据加密传输实践
在设计数据加密传输方案时,选择合适的加密算法是关键。我们主要考虑以下两种加密方式:
数字扫地僧
2025/05/05
2140
MCP(Model Context Protocol)配置安全方案:数据加密传输实践
RocketMQ5.0 如何配置TLS加密传输?
以下全部操作在的目录在:/etc/rocketmq, 并且Namesrv、Broker、Dashboard在同一个机器上, 实际操作时, dashboard或者客户端可以是其他的机器
小伟
2023/10/08
6311
RocketMQ5.0 如何配置TLS加密传输?
RocketMQ 零基础 集群及控制台部署
一、首先准备linux环境 使用了两个虚拟机系统 版本为Centos 7 ip地址固定为192.168.194.128 192.168.194.129
heasy3
2020/08/02
1.8K0
RocketMQ 5.0 vs 4.9.X 图解架构对比
消费者消费消息消费者<-> Namesrv 1. 消费者从Namesrv获取Topic路由信息, 包含 Broker IP消费者 <-> Broker
小伟
2022/12/14
7670
RocketMQ 5.0 vs 4.9.X 图解架构对比
[5.0] How RocketMQ Proxy Startup?
本文分享RocketMQ Proxy是如何启动的,代码基于https://github.com/apache/rocketmq/tree/release-5.0.0
小伟
2022/10/31
1.9K0
[5.0] How RocketMQ Proxy Startup?
rocketmq-5:生产级rocketmq集群部署
集群形式:2m-2s-2namesrv;2个master,2个slave,2个namesrv。
千里行走
2019/09/19
2K0
rocketmq-5:生产级rocketmq集群部署
RocketMQ 5.0 vs 4.9.X 图解架构对比
誊写过来格式不好看, 欢迎直接看: 公众号原文一、RocketMQ 4.9.X架构图片在4.9.X中每个组件和组件之间的通信简单说明如下:组件和数据流说明Namesrv无状态服务,保存Topic路由信息Topic路由=topic-queue-brokerBroker有状态服务,处理计算和存储。计算 = 生产者请求,消费者请求,管理请求,Broker系统服务(比如索引构建服务,消息过期服务)存储  = 消息存储,索引存储Broker -> NamesrvBroker定期把Broker信息+当前Broker中的
小伟
2022/11/04
1.2K0
RocketMQ 5.0 vs 4.9.X 图解架构对比
【Linux】RocketMQ 部署(二进制方式)
本文基于 RocketMQ 4.9.4 版本,在 Kylin V10 操作系统下完成了 RocketMQ 的非容器化部署验证工作,以下为完整过程。
行者Sun
2024/09/02
3390
【Linux】RocketMQ 部署(二进制方式)
RocketMQ 环境搭建
RocketMQ 环境搭建 一. 开发环境 操作系统:CentOS7 JDK1.8 二. 安装JDK 下载jdk-8u181-linux-x64.tar.gz包到/usr/local下 解压 tar -zxvf jdk-8u181-linux-x64.tar.gz 重命名 mv jdk1.8.0_181/ ./jdk1.8 配置Java环境变量 修改配置文件 /etc/profile vi /etc/profile 在文件末尾增加Java环境变量配置 export JAVA
张申傲
2020/09/03
8860
RocketMQ5.0 搭建 Name Server And Broker+Proxy 同进程部署、搭建RocketMQ控制台图形化界面
RocketMQ5.0中的几个角色NameServer、Broker 和 Proxy,它们的作用如下:
杨不易呀
2023/10/09
3K1
RocketMQ5.0 搭建 Name Server And Broker+Proxy 同进程部署、搭建RocketMQ控制台图形化界面
手摸手教你在腾讯云CVM搭建RocketMQ
RocketMQ是一款开源的、分布式的消息中间件系统,由阿里巴巴开发并贡献给Apache基金会,目前是Apache项目之一。它具有高可靠性、高性能、可扩展性和灵活的特点,被广泛应用于大规模分布式系统的消息通信场景
不惑
2024/06/13
1490
手摸手教你在腾讯云CVM搭建RocketMQ
rocketmq主从模式搭建
修改nameserver和broker的启动参数,对于2c8g机器,nameserver建议1g,broker建议4g。
叔牙
2023/12/11
2890
rocketmq主从模式搭建
搭建源码调试环境—RocketMQ源码分析(一)
这是因为掌握了整体架构,可以让我们迅速了解各个方面的特性,并且可以方便我们后续快速定位功能模块对应的代码文件。话不多说,我们开始看RocketMQ目录结构。
程序员Alan
2022/11/02
9470
RocketMQ生产问题一般如何排查?
从RocketMQ架构来看,用户在使用客户端生产时时不时会遇到一些问题,这里做了一些总结,大家参考
小伟
2023/03/03
2.4K0
CentOS 7 部署LDAP服务并启用TLS加密
简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是为了实现目录服务的信息服务。 目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。在网络中应用了LDAP后,用户只需要使用一个账号和密码就可以轻松访问网络中的所有服务,实现用户身份的统一认证。 简单来说:拿LDAP来统一管理一些账号,例如: Gitlab,JenKins,Samba,SVN,Zabbix等。 关于SSL/TLS LDAP over SSL # LDAP
星哥玩云
2022/07/25
1.9K0
CentOS 7 部署LDAP服务并启用TLS加密
RocketMQ原理—2.源码设计简单分析一
NameServer会通过rocketmq-master源码中distribution/bin目录下的mqnamesrv脚本来启动。在mqnamesrv脚本中,用于启动NameServer进程的命令如下。也就是使用sh命令执行runserver.sh脚本,然后通过这个脚本去启动NamesrvStartup这个Java类。
东阳马生架构
2025/04/02
730
20.7 OpenSSL 套接字SSL加密传输
OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手,读者可将这个流程理解为上一章中RSA的分发密钥环节,只是SSL将这个过程简化了,当使用时无需关注传输密钥对的问题。
王瑞MVP
2023/11/05
4540
20.7 OpenSSL 套接字SSL加密传输
使用Idea部署RocketMq 源代码(4.9.4)
个人拉取的版本为 4.9.4,因为时效性未来版本有些代码可能会被改进,所以要注意版本问题。
阿东
2022/09/11
4040
RocketMQ5部署单节点服务
关于RocketMQ的单节点部署官方文档已经描述得非常清楚了,这里只是做一个简单的备忘。 如下安装步骤均基于最新的Apache RocketMQ 5.3.0实现。
编程随笔
2024/09/09
1750
RocketMQ5部署单节点服务
RocketMQ源码之路(一)搭建RocketMQ源码环境
本文不再赘述如何去fork代码,如何去git clone代码,笔者认为多数读者都会这些基本操作,如果正在阅读的您尚未掌握这些技巧,可以去查看一下其他博主的文章,正确把RocketMQ源码拉取到本地后再来阅读该文章。 Apache RocketMQ是一个基于Java语言开发的消息中间件,构建工具采用的是常用的maven,基本的代码结构如下图1-1所示:
itlemon
2020/09/27
1K0
相关推荐
MCP(Model Context Protocol)配置安全方案:数据加密传输实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档