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

本文主要是介绍195、SpringBoot--配置RabbitMQ消息Broker的SSL 和 管理控制台的HTTPS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开启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 的管理界面的服务端口,默认15672management.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

这篇关于195、SpringBoot--配置RabbitMQ消息Broker的SSL 和 管理控制台的HTTPS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/189995

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@