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 ...
随机推荐
- 几乎纯css实现弹出框
今天需要做一个弹出框,右下角提示的那种 ,看了一两个jquery的插件 总是不太满意 .一方面js内容太多,另一方面 不太好配合已经存在的样式使用.所以 就自己用css直接实现了下 效果还可以 . 上 ...
- centos 安装 图像识别工具 tesseract-ocr 流程
(1)首先安装依赖的leptonica库:wget http://www.leptonica.com/source/leptonica-1.72.tar.gztar -xvf leptonica-1. ...
- 解决 jquery attr多次使用失效的问题
今天做一个全选功能的时候用到了jq 的attr 的方法,可是在真正使用的时候首次是可以实现全选和全不选的功能,然而 多点几次就会发勾选的效果消失了!先看下代码吧: <!DOCTYPE html& ...
- 使用 defineNuxtRouteMiddleware 创建路由中间件
title: 使用 defineNuxtRouteMiddleware 创建路由中间件 date: 2024/8/10 updated: 2024/8/10 author: cmdragon exce ...
- MPTCP(三) : 在内核中启用MPTCP相关模块
在内核中启用MPTCPv1相关的模块 1. 简介 本文所涉及的均为MPTCPv1版本的MPTCP,采用的内核版本为5.18.19 需要注意的是 虽然MPTCP官方文档中提到在5.6之后的linux内核 ...
- rk3568 | 瑞芯微平台GPIO引脚驱动编写
最近在玩瑞芯微平台的产品,移植了几个设备的驱动,遇到了一些问题,总结后发现大部分问题都出在了GPIO配置的问题上,写下本篇文章,用来分享一下调试的心得. 有喜欢瑞芯微的朋友,可以加我好友,拉你进群,一 ...
- Linux C基础——” Makefile “ 文件管理大师你拜访过嘛?
Make简介: 工程管理器,顾名思义,是指管理较多的文件 Make工程管理器也就是个"自动编译管理器",这里的"自动"是指它能够根据文件时间戳自动发现更新过的文 ...
- C++20新特性
C++20新特性 语言特性 协程 concept概念 指定初始化器 lambda表达式模板语义 范围for循环增加初始化器 [[likely]] [unlikely]属性 废弃隐式捕获this 非类型 ...
- CF1693D--单调区间
\(T_4\) 单调区间结题报告 题目描述 一句话题意:给定一个排列 \(a\) 算出有多少个区间 \([l , r]\) , 满足其可以划分为一个单调递增子序列和单调递减子序列,其中单调递增子序列长 ...
- layui的各模块的基本用途是什么?
Layui 是一个流行的前端UI框架,提供了多个模块,每个模块有不同的功能和用途.以下是 Layui 的一些主要模块以及它们的基本用途: 核心模块(layui): Layui 的核心模块包含了一些核心 ...