195、SpringBoot--配置RabbitMQ消息Broker的SSL 和 管理控制台的HTTPS

news2024/11/23 18:39:59

开启Rabbitmq的一些命令:
小黑窗输入:
rabbitmq-plugins enable rabbitmq_management 启动控制台插件,就是启动登录rabbitmq控制台的页面
rabbitmq_management 代表了RabbitMQ的管理界面。

rabbitmq-server 启动rabbitMQ服务器

在这里插入图片描述
上面这个:rabbitmq-plugins enable rabbitmq_management 启动控制台插件,就是启动登录rabbitmq控制台的页面,就是为了打开这个:
启动浏览器访问 http://localhost:15672/ 将看到登录界面
在这里插入图片描述

管理员启动小黑窗:
rabbitmq-service install 添加rabbitMQ为本地服务
用来添加这个
在这里插入图片描述

其他命令:
查看监听端口:rabbitmq-diagnostics listeners
查看节点信息命令:rabbitmq-diagnostics status --node rabbit@JHComputer
在这里插入图片描述
在这里插入图片描述

★ RabbitMQ的配置文件

▲ 保存位置

Linux及类似系统中配置文件位于/etc/rabbitmq/目录下
Windows系统中配置文件位于%APPDATA%\RabbitMQ\下(C:\Users\JH\AppData\Roaming\RabbitMQ)

▲ 3个配置文件:
- rabbitmq.conf:新式格式(类似application.properties风格)的配置文件。

- advanced.config:经典格式(JSON风格)的配置文件。
  只有极少数rabbitmq.conf 不支持的配置(如LDAP)才需要使用该配置文件

- rabbitmq-env.conf (Windows用rabbitmq-env.conf.bat):用于集中管理RabbitMQ所需的环境变量。

具体可参考https://www.rabbitmq.com/configure.html#config-location页面

在这里插入图片描述

★ 配置RabbitMQ的端口

在rabbitmq.conf文件中增加如下配置(5672是默认值) :
listeners.tcp.default = 5673
▲ 配置完成后,可通过Web管理界面的Overview→Nodes→rabbit@pc名查看节点信息。

▲ 也可通过如下命令查看节点信息
rabbitmq-diagnostics status --node rabbit@JHComputer

▲ 或通过如下命令查看监听端口:
rabbitmq-diagnostics listeners

演示:

在这里创建这个配置文件,在启动RabbitMQ的时候,就会自动加载这个配置文件
在这里插入图片描述
启动RabbitMQ,可以看出自己添加的配置文件被加载了
在这里插入图片描述
在这里插入图片描述

配置完成后,可通过Web管理界面的Overview→Nodes→rabbit@pc名查看节点信息。
这个rabbit@pc名 就是 rabbit@JHComputer,如图

在这里插入图片描述

▲ 也可通过如下命令查看节点信息
rabbitmq-diagnostics status --node rabbit@JHComputer
再开启一个小黑窗输入这个命令
监听端口成功变成我们自己定义的 5763
这个能看这个节点的所有信息
在这里插入图片描述

▲ 或通过如下命令查看监听端口:
rabbitmq-diagnostics listeners
这个命令只单独看端口
在这里插入图片描述

什么是SSL?

SSL证书是数字证书的一种,也称SSL服务器证书。
在这里插入图片描述

★ 启用消息Broker的SSL

SSL: Secure Sockets Layer,安全套接字层
要启用消息Broker的SSL,需要证书。

▲ 启用消息Broker的SSL需要两步:
(1)获得证书。使用自签名证书或购买权威机构颁发的证书。
(2)设置证书。
 具体可参考https://www.rabbitmq.com/ssl.html#enabling-tls

证书没买的话,就自己生成一个自签名证书,但是安全性低,没啥用,仅作为演示。

★ 生成自签名证书

RabbitMQ提供了一个小工具来生成证书。直接运行该工具包来生成证书即可。

▲ 执行如下命令clone工具包:
git clone https://github.com/michaelklishin/tls-gen tls-gen
该命令执行完成后,会在当前目录下多出一个tls-gen目录,该目录下就保存了额RabbitMQ所提供的证书工具。

▲ 修改tls-gen目录下的common.mk文件,将其中PYTHON := 的值改为Python3命令的绝对路径。
   ——你的电脑上必须安装Python 3。这暗示了:该工具需要有Python环境。

▲ 进入tls-gen\basic目录下,执行如下命令(需要msys2工具)来生成证书(其中123456用于指定私钥密码):

make PASSWORD=123456

▲ 证书生成完成后,会在basic目录下生成result、testca、server和client四个文件夹。

▲ 关键就是result目录下的几个文件:

- result/ca_certificate.pem:CA的证书。
- result/server_certificate.pem:服务器端用的证书
- result/server_key.pem:服务器端所用key文件
- result/client_key.p12:客户端信任该证书所需要的密钥文件,供Java客户端使用。

生成自签名证书的演示

用这个命令需要已经安装有git
▲ 执行如下命令clone工具包:
git clone https://github.com/michaelklishin/tls-gen tls-gen
在这里插入图片描述
该命令执行完成后,会在当前目录下多出一个tls-gen目录,该目录下就保存了额RabbitMQ所提供的证书工具。
在这里插入图片描述

▲ 修改tls-gen目录下的common.mk文件,将其中PYTHON := 的值改为Python3命令的绝对路径。
——你的电脑上必须安装Python 3。这暗示了:该工具需要有Python环境。

因此,再安装一个python3.8版本
python3.8下载及安装

在这里插入图片描述

▲ 进入tls-gen\basic目录下,执行如下命令(需要msys2工具)来生成证书
(其中123456用于指定私钥密码): make PASSWORD=123456
安装msys2

证书生成完成后,会在basic目录下生成result、testca、server和client四个文件夹。

打开msys2软件,输入如图命令,生成完就可以退出了
在这里插入图片描述

▲ 关键就是result目录下的几个文件:

- result/ca_certificate.pem:CA的证书。
- result/server_certificate.pem:服务器端用的证书
- result/server_key.pem:服务器端所用key文件
- result/client_key.p12:客户端信任该证书所需要的密钥文件,供Java客户端使用。

在这里插入图片描述
在这里插入图片描述

★ 配置消息Broker的SSL证书

在这里插入图片描述

▲ 在rabbitmq.conf文件中增加如下配置:

如果要禁用非SSL的监听:添加如下配置:
listeners.tcp = none

配置非SSL的监听端口。
listeners.tcp.default = 5672

配置SSL的端口
listeners.ssl.default = 5673

ssl_options.cacertfile = CA证书的路径
ssl_options.certfile = 服务器端证书的路径
ssl_options.keyfile = 服务器端key的路径

ssl_options.verify = verify_peer
verify_none表示忽略证书验证,verify_peer表示要求验证对方证书

ssl_options.fail_if_no_peer_cert = true
若为true,服务器端会向客户端索要证书,若客户端无证书则中止SSL握手;
若为false,则客户端没有证书时依然可完成SSL握手

rabbitmq官网参考
在这里插入图片描述
对这个rabbitmq.conf文件进行配置
在这里插入图片描述

查看监听端口:rabbitmq-diagnostics listeners
表示配置消息Broker的SSL成功
在这里插入图片描述

★ 配置管理界面(rabbitmq_management插件)的HTTPS

没配置之前,这里是http,不安全。
现在要弄成 https 。
在这里插入图片描述

http 本身是一个应用层的协议,SSL 是一个网络安全传输层,
基于网络安全传输层 的 http 就变成了所谓的 https

▲ 在rabbitmq.conf文件中增加如下配置(所有management相关的配置都用于配置rabbitmq_management插件):
rabbitmq_management: 代表了RabbitMQ的管理界面。

management.tcp.port = 15672

management.ssl.port = 15673
management.ssl.cacertfile = CA证书的路径
management.ssl.certfile = 服务器端证书的路径
management.ssl.keyfile =服务器端key的路径
management.ssl.verify = verify_none
management.ssl.fail_if_no_peer_cert = false

▲ 具体可参考https://www.rabbitmq.com/management.html#multiple-listeners
在这里插入图片描述

在这里插入图片描述

如图:两条相同的查看监听端口:rabbitmq-diagnostics listeners。
没标注颜色解释的是配置之前的,标注颜色解释的是配置的之后的,演示区别:
在这里插入图片描述

因为 RabbitMQ 的管理界面的服务端口,默认是15672,
所以把上面的15677 改成 15672 。与默认的保持一致最好。

在这里插入图片描述
重启rabbitmq服务,再重新查监听端口:rabbitmq-diagnostics listeners。
在这里插入图片描述

▲ 若使用自签名的证书,所有浏览器都无法访问该HTTPS服务,因此这些浏览器都不信任该自签名证书。

原本的http访问
在这里插入图片描述

使用 https 来访问。

如图:因为配置 https 是用了自己生成的ssl的自签名证书,安全性低,浏览器不信任,不给访问。
如果用买的有权威的签名证书才可以访问。,仅作为演示如何设置证书。
在这里插入图片描述

rabbitmq.conf

在c盘
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

# 配置 RabbitMQ 的监听端口,默认5672
listeners.tcp.default = 5672

#  消息broker的SSL 的相关配置
#  配置 SSL 的端口
listeners.ssl.default = 5673

# 配置 CA证书的路径
ssl_options.cacertfile = E:\install\RabbitMQ\rabbitmq-3.9.4\tls-gen\basic\result\ca_certificate.pem

# 配置 服务器端证书的路径
ssl_options.certfile   = E:\install\RabbitMQ\rabbitmq-3.9.4\tls-gen\basic\result\server_JHComputer_certificate.pem

# 配置 服务器端key的路径,就是私钥证书的位置
ssl_options.keyfile    = E:\install\RabbitMQ\rabbitmq-3.9.4\tls-gen\basic\result\server_JHComputer_key.pem

# 是否要对客户端的证书进行验证
# verify_none表示忽略证书验证,verify_peer表示要求验证对方证书
ssl_options.verify     = verify_peer

# 客户端验证失败的时候是否直接停止
#  若为true,服务器端会向客户端索要证书,若客户端无证书则中止SSL握手;
#  若为false,则客户端没有证书时依然可完成SSL握手,就是证书即使验证失败,也依然提供服务
ssl_options.fail_if_no_peer_cert = true




# 配置 RabbitMQ 的管理界面的服务端口,默认15672

management.tcp.port = 15672

# 配置 HTTPS 的端口 
management.ssl.port  = 15673

# 配置 CA证书的路径
management.ssl.cacertfile = E:\install\RabbitMQ\rabbitmq-3.9.4\tls-gen\basic\result\ca_certificate.pem

# 配置 服务器端证书的路径
management.ssl.certfile   = E:\install\RabbitMQ\rabbitmq-3.9.4\tls-gen\basic\result\server_JHComputer_certificate.pem

# 配置 服务器端key的路径,就是私钥证书的位置
management.ssl.keyfile    = E:\install\RabbitMQ\rabbitmq-3.9.4\tls-gen\basic\result\server_JHComputer_key.pem


# 是否要对客户端的证书进行验证
# verify_none表示忽略证书验证,verify_peer表示要求验证对方证书
management.ssl.verify = verify_none

#  客户端验证失败的时候是否直接停止
#  若为true,服务器端会向客户端索要证书,若客户端无证书则中止SSL握手;
#  若为false,则客户端没有证书时依然可完成SSL握手,就是证书即使验证失败,也依然提供服务
management.ssl.fail_if_no_peer_cert = false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1071691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot中的静态资源规则~

静态资源处理: 默认的静态资源路径为 calsspath:/META-INF/resources/ classpath:/resources/ classpath:/static/ classpath:/public/如果我们将静态资源放置上述四种路径处,那么可以通过项目根路径/静态资源名称的方式访问到,否则会访问不…

Oracle-ASM实例communication error问题处理

问题背景: Oracle数据库日志出现大量的WARNING: ASM communication error: op 0 state 0x0 (15055)错误 问题分析: 首先检查ASM实例的状态,尝试通过sqlplus / as sysasm连接asm实例,出现Connected to an idle instance连接asm实例失败 检查ASM实例的后台…

mysql面试题27:数据库中间件了解过吗?什么是sharding jdbc、mycat,并且讲讲怎么使用?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库中间件了解过吗,比如sharding jdbc、mycat? 我知道的数据库中间件有以下这些: MySQL Proxy:MySQL Proxy是一个开源的数据库中间件,它位…

SSM170基于SSM的疫情物质管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

怎么禁止windows server2003系统中的用户进行本地登陆

随着科技的发展,电脑已经成为人们日常生活中必不可少的工具,电脑系统也在逐步更新,这就导致了许多人对于陌生的系统都不知道应该怎么办?当我们在使用windows server2003时,如何设置用户禁止本地登陆呢?接下…

【Linux初阶】多线程1 | 页表的索引作用 线程基础

本文要点 再次理解页表,了解页表是如何利用虚拟地址进行索引,实现数据读取和传输的了解线程概念,线程的优缺点,线程异常的后果了解线程和进程的差异了解线程库及其基本调用接口(进程创建、终止、等待、控制&#xff0…

SQL sever中的视图

目录 一、视图概述: 二、视图好处 三、创建视图 法一: 法二: 四、查看视图信息 五、视图插入数据 六、视图修改数据 七、视图删除数据 八、删除视图 法一: 法二: 一、视图概述: 视图是一种常用…

如何使用 Datree 避免 Kubernetes 错误配置

Kubernetes 是一个复杂的系统,具有许多移动部件。正确的配置规则对于您的服务可靠运行至关重要。当您在没有经过全面审查过程的情况下手动编写 Kubernetes 清单时,可能会出现错误。 Datree是一个基于规则的工具,可以自动查找清单中的问题。您可以使用它来发现策略违规行为,…

常见算法-洗扑克牌(乱数排列)

常见算法-洗扑克牌(乱数排列) 1、说明 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1∼N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。 初学者通常会直接想到,随…

基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

作者:车漾(必嘫) 本系列文章将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景。 概述 在 AI 和大数据时代,算力即正义,强大的算力推动了源源不断的创新。然而,企业自建的算力集群存在资源容量和…

继续改进 换一种 使用 result 想直接用CourseExtend

改 c.cid cid, 表示 c.cid 在 from timetable tt inner join teacher t on tt.tidt.tid inner join course c on tt.cidc.cid where tt.cid#{cid} 查出来了 任何赋值给 后面那个cid t.tname "teacher.tname", 表示查出来 赋值给下图那个teacher类的对应属性…

解决:yarn 无法加载文件 “C:\Users\XXXXX\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本“ 的问题

1、问题描述: 报错的整体代码为: yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本 // 整体的报错代码为 : yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1&…

HarmonyOS/OpenHarmony原生应用开发-华为Serverless云端服务支持说明(一)

云端服务的实现是HarmonyOS/OpenHarmony原生应用开发的一个重要的环节,如果用户端是鸿蒙原生应用,但是服务端即云端还是基于传统的各种WEB网络框架、数据库与云服务器,那么所谓的原生应用开发实现的数据即后端服务是和以前、现在的互联网、移…

线性代数中涉及到的matlab命令-第一章:行列式

目录 1,逆序数 2,行列式定义和性质 2.1,常用特性及命令 2.2,求行列式 2.3,行列式的性质 2,行列式按行(列)展开 3,范德蒙德行列式 在学习线性代数过程中&#…

ssm172基于SSM的旅行社管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

python每日一练(3)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

安装torchtext遇到的坑及解决办法

刚开始秉着需要什么就pip install什么的原则直接pip install torchtext,结果: 把我这个环境打乱了,自作主张的删掉之前的很多包重新安装了其他版本的包而不是自适应的安装当前torch所对应的torchtext。因为这个环境比较重要也用在其他的工程…

【办公-excel】两个时间相减 (二) - 带毫秒的时间进行相减操作

一、使用内部函数 1.1 效果展示 TEXT(((RIGHT(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"),LEN(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"))-FIND(".",TEXT(B2,"yyyy-mm-dd hh:mm:ss.000")))-RIGHT(TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"),…

力扣刷题 day38:10-08

1.矩阵中战斗力最弱的 K 行 给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。 请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。 如果第 i 行的军人数量少于第 j 行,或者两行军人数…

数据结构——哈希的应用之位图,布隆过滤器与哈希切割

文章目录 前言1. 位图1.1 位图的概念1. 2 模拟实现stl位图位图的应用 2.布隆过滤器2.1 布隆过滤器的概念 布隆过滤器的查找布隆过滤器的删除问题布隆过滤器优点布隆过滤器缺陷 哈希切割 前言 本篇博客主要讲述的是应用哈希的一些数据结构_位图和布隆过滤器,讲解了这…