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或者客户端可以是其他的机器
- 生成ca签名证书
填写与重复填写ca证书密码。实际填写的时候是输入的字符是看不见的。
openssl req -newkey rsa:2048 -keyout ca_rsa_private.pem -x509 -days 365 -out ca.pem
- 填写其他信息, 不填的话使用 “.”
生成ca签名证书
- 生成公私密钥。提供给客户端-服务端加密传输使用
openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csr
Generating a 2048 bit RSA private key
生成加密密钥对
- 生成Namesrv、Broker加密密钥对,并且签发Namesrv、Broker证书
openssl req -newkey rsa:2048 -keyout server_rsa.key -out server.csrGenerating a 2048 bit RSA private key
生成Namesrv、Broker密钥,签发证书
- 打包并加密Namesrv、Broker私钥
- 添加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版本差不多, 基本都可以用。
RocketMQ 5.0 如何配置TLS加密传输?的更多相关文章
- OpenLDAP配置TLS加密传输
原文发表于cu:2016-07-04 参考文档: 基于OpenSSL自建CA与颁发SSL证书:http://seanlook.com/2015/01/18/openssl-self-sign-ca/ ...
- MQTT TLS 加密传输
MQTT TLS 加密传输 Mosquitto原生支持了TLS加密,TLS(传输层安全)是SSL(安全套接层)的新名称,生成证书后再配置一下MQTT代理,本文主要介绍Mqtt如何实现双向认证和单向认证 ...
- apache配置https加密传输
环境:两台linux虚拟机和一台windows本机,一台充当要使用https传输的web服务器apache2.4.4,另一台CA服务器,window测试https配置. 1.CA服务器生成私有CA 1 ...
- SSL/TLS加密传输与数字证书解读
什么是ssl? secure socket layer(ssl)协议最初由netscape企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准 ...
- linux下使用vsftp搭建FTP服务器:匿名登录,账号登录,SSL加密传输
目录 一.关于FTP和VSFTP 二.ftp.sftp.vsftp.vsftpd的区别 三.项目一:搭建一台所有人都可以访问的通用FTP服务器 3.1 项目要求 3.2 项目思路分析 3.3 使用vs ...
- 09-OpenLDAP加密传输配置
OpenLDAP加密传输配置(CA服务器与openldap服务器异机) 阅读视图 环境准备 CA证书服务器搭建 OpenLDAP服务端与CA集成 OpenLDAP客户端配置 客户端测试验证 故障处理 ...
- 在SuperSocket中启用TLS/SSL传输层加密
关键字: TLS, SSL, 传输层加密, 传输层安全, 证书使用, X509Certificate SuperSocket 支持传输层加密(TLS/SSL) SuperSocket 有自动的对TLS ...
- nginx配置ssl加密(单双向认证、部分https)
nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...
- [转帖]nginx配置ssl加密(单/双向认证、部分https)
nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627 nginx下配置ssl本来是很简单的,无论是去认证 ...
- SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输
SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输 微软高兴地宣布所有主流SQL Server客户端驱动和SQL Server发行版已经支持T ...
随机推荐
- 国产CPU(兆芯 kx-6640) 播放1080p视频效果
前一阵买了一个国产CPU的主机(国产CPU,国产操作系统UOS--零刻LZX迷你主机 , 显卡驱动安装以及屏幕配置),cpu是兆芯 kx-6640,用来播放1080p的视频虽然不是那么丝滑的流畅,但 ...
- windows10操作系统QQ音乐开全局音效后频繁出现报错,鼠标卡顿,系统死机等问题——解决方法
如题: windows10操作系统QQ音乐开全局音效后频繁出现报错,鼠标卡顿,系统死机等问题. QQ音乐,开启全局音效,提示需要重启: 重启电脑后发现出现频繁卡机,鼠标卡顿,甚至短暂的死机现象,查看控 ...
- Correct the classpath of your application so that it contains a single, compatible version of xxx报错解决
1.背景 有时候引入包有冲突,比如在Maven项目中的不同模块多次重复引入等 这里遇到的问题是重复映入了如下包: <dependency> <groupId>com.baomi ...
- Vim 全局配置 / 设置鼠标模式
新搞的 Linux (Debian) 上的 vim 一右击粘贴就变成 insert (Visual) 模式,上网查了一下,要 set mouse=,但是每次设置太麻烦了,另外我也想改一下全局配色. 定 ...
- 代码随想录Day16
513.找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值. 假设二叉树中至少有一个节点. 示例 1: 输入: root = [2,1,3] 输出: 1 示 ...
- 记一次解决OTA死机重启bug,如何分析与解决措施?!
背景: 平台:stm32mp151平台 什么是OTA? 说起OTA我们应该都不陌生,它是一种可以为设备无损失升级系统的方式,能将新功能远程部署到产品上. 我们不仅可以通过网络下载OTA升级包,也可以通 ...
- 在 Windows 中启用 Administrator 帐户
打开管理员终端. 启用: net user administrator /active:yes 关闭: net user administrator /active:no
- 一场 Kafka CRC 异常引发的血案
一.问题概述 客户的生产环境突然在近期间歇式的收到了Kafka CRC的相关异常,异常内容如下 Record batch for partition skywalking-traces-0 at of ...
- 调用微信红包接口,本地可以服务器不可以。 请求被中止: 未能创建 SSL/TLS 安全通道
微信红包的地址接口地址是: https://api.mch.weixin.qq.com/pay/micropay 当时造成这个不能用的原因是:我把服务器从windows server 2008升级到w ...
- Centos7.9安装Docker和Docker compose
什么是docker环境 Docker环境是指在计算机中安装和配置了Docker引擎的运行环境.Docker是一种容器化平台,它提供了一种轻量级的虚拟化技术,能够将应用程序及其依赖项打包成一个独立的容器 ...