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控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
上面这个:rabbitmq-plugins enable rabbitmq_management 启动控制台插件,就是启动登录rabbitmq控制台的页面,就是为了打开这个:
启动浏览器访问 http://localhost:15672/ 将看到登录界面
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

管理员启动小黑窗:
rabbitmq-service install 添加rabbitMQ为本地服务
用来添加这个
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

其他命令:
查看监听端口:rabbitmq-diagnostics listeners
查看节点信息命令:rabbitmq-diagnostics status --node rabbit@JHComputer
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

★ 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控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

★ 配置RabbitMQ的端口

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

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

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

演示:

在这里创建这个配置文件,在启动RabbitMQ的时候,就会自动加载这个配置文件
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
启动RabbitMQ,可以看出自己添加的配置文件被加载了
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

▲ 也可通过如下命令查看节点信息
rabbitmq-diagnostics status --node rabbit@JHComputer
再开启一个小黑窗输入这个命令
监听端口成功变成我们自己定义的 5763
这个能看这个节点的所有信息
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

▲ 或通过如下命令查看监听端口:
rabbitmq-diagnostics listeners
这个命令只单独看端口
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

什么是SSL?

SSL证书是数字证书的一种,也称SSL服务器证书。
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,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
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
该命令执行完成后,会在当前目录下多出一个tls-gen目录,该目录下就保存了额RabbitMQ所提供的证书工具。
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

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

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

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

打开msys2软件,输入如图命令,生成完就可以退出了
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

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

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

★ 配置消息Broker的SSL证书

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,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控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
对这个rabbitmq.conf文件进行配置
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

查看监听端口:rabbitmq-diagnostics listeners
表示配置消息Broker的SSL成功
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

没配置之前,这里是http,不安全。
现在要弄成 https 。
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

如图:两条相同的查看监听端口:rabbitmq-diagnostics listeners。
没标注颜色解释的是配置之前的,标注颜色解释的是配置的之后的,演示区别:
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
重启rabbitmq服务,再重新查监听端口:rabbitmq-diagnostics listeners。
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

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

原本的http访问
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

使用 https 来访问。

如图:因为配置 https 是用了自己生成的ssl的自签名证书,安全性低,浏览器不信任,不给访问。
如果用买的有权威的签名证书才可以访问。,仅作为演示如何设置证书。
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

rabbitmq.conf

在c盘
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置

rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置
rabbitmq控制台,Spring Boot,RabbitMQ,spring boot,rabbitmq,SSL配置文章来源地址https://www.toymoban.com/news/detail-768800.html

# 配置 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

到了这里,关于195、SpringBoot--配置RabbitMQ消息Broker的SSL 和 管理控制台的HTTPS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务: 04-springboot中rabbitmq的yml或properties配置,消息回收,序列化方式

    目录 1. 本文简介:  1.1 java序列化的缺点 --- 1.1.1 无法跨语言 ---1.1.2  易被攻击 --- 1.1.3 序列化后的流太大 --- 1.1.4 序列化性能太差 2. 配置总览 2.1  基础配置  2.2 连接重试配置  2.3  异常重试机制 2.4 确认模式(本篇是自动)  --- 2.4.1 如图所示 2.5 发送确认设置  --- 2.5.1 参数解释

    2024年02月04日
    浏览(30)
  • Linux系统下消息中间件RocketMQ下载、安装、搭建、配置、控制台rocketmq-dashboard的安装保姆级教程 rocketmq ui

    这里给出我使用的 RocketMQ 版本(5.1.3)、RocketMQ-Dashboard 版本的百度网盘链接: 链接:https://pan.baidu.com/s/1HaKBBDGWZ0WKLGgVwIG9pw 提取码:1234 1、注意:有两种资源下载:Source表示源码、Binary是二进制包(我们下载这个):二进制包是已经编译完成后可以直接运行的,源码包是需要

    2024年02月12日
    浏览(42)
  • RabbitMQ保证消息的可靠投递,Java实现RabbitMQ消息的可靠投递,Springboot实现RabbitMQ消息的可靠投递

    我们先看一串代码,并思考一下为什么要先入库然后发MQ: 如果先发MQ的话,如果入库失败,就会导致MQ消息无法回滚了。今天我们就好好聊一聊RabbitMQ消息可靠投递的问题。 ① 消息从生产者发送到Broker 生产者把消息发送到Broker之后,如何知道自己的消息有没有被Broker成功接

    2024年02月11日
    浏览(36)
  • 搭建RabbitMQ消息服务,整合SpringBoot实现收发消息

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,蓝桥云课认证讲师。 消息队列是一种在应用程序之间传递数据的通信机制 ,它基于 发布-订阅 模式,将消息发送者(发布者)和消息接收者

    2024年02月09日
    浏览(46)
  • SpringBoot: RabbitMQ消息队列之同时消费多条消息

    1. basicQos预取方法参数解析 basicQos(int prefetchCount) basicQos(int prefetchCount, boolean global) basicQos(int prefetchSize, int prefetchCount, boolean global) 参数: prefetchSize:可接收消息的大小 prefetchCount:处理消息最大的数量。 global:是不是针对整个Connection的,因为一个Connection可以有多个Channel,如

    2024年02月01日
    浏览(55)
  • Springboot与RabbitMQ消息超时时间、队列消息超时时间

    TTL是 Time-To-Live 的缩写,RabbitMQ可以对消息和队列设置TTL(过期时间)。 RabbitMQ针对队列中的消息过期时间(Time To Live, TTL)有两种方法可以设置。 第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。 第二种方法是对消息进行单独设置,每条消息TTL可以不同。

    2024年02月09日
    浏览(35)
  • 【SpringBoot笔记29】SpringBoot集成RabbitMQ消息队列

    这篇文章,主要介绍SpringBoot如何集成RabbitMQ消息队列。 目录 一、集成RabbitMQ 1.1、引入amqp依赖 1.2、添加连接信息 1.3、添加RabbitMQ配置类

    2023年04月08日
    浏览(40)
  • SpringBoot RabbitMQ 实现消息队列功能

    作者:禅与计算机程序设计艺术 在企业级应用中,为了提升系统性能、降低响应延迟、改善用户体验、增加系统的稳定性、提高资源利用率等方面所需的功能之一就是使用消息队列。RabbitMQ是一个开源的AMQP(Advanced Message Queuing Protocol)的实现消息队列,它是用Erlang语言开发的。

    2024年02月09日
    浏览(34)
  • 8. springboot + rabbitmq 消息发布确认机制

    在 RabbitMQ之生产者发布确认原理章节已经介绍了rabbitmq生产者是如何对消息进行发布确认保证消息不丢失的。本章节继续看下springboot整合rabbitmq后是如何保证消息不丢失的。 消息正常是通过生产者生产消息传递到交换机,然后经过交换机路由到消息队列中,最后消费者消费,

    2023年04月25日
    浏览(48)
  • springBoot-rabbitMq手动确认消息

    代码基础怎么写我就不说了,看我的另一篇博客 springBoot整合RabbitMQ(Demo)_我要用代码向我喜欢的女孩表白的博客-CSDN博客 假设你要手动ack,怎么做呢? 通常自动是,mq发给服务端,服务端收到了就当处理过了,但是我们要保证数据不丢失。所以得处理完了,才告诉mq说我做

    2024年02月11日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包