目录
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提供了一个小工具来生成证书。直接运行该工具包来生成证书即可。
1、执行如下命令clone工具包:
git clone https://github.com/michaelklishin/tls-gen tls-gen
 
该命令执行完成后,会在当前目录下多出一个tls-gen目录,该目录下就保存了额rabbitmq所提供的证书工具。
2、修改tls-gen目录下的common.mk文件,将其中python := 的值改为python3命令的绝对路径。
——你的电脑上必须安装python 3。这暗示了:该工具需要有python环境。
3、进入tls-gen\basic目录下,执行如下命令(需要msys2工具)来生成证书(其中123456用于指定私钥密码):
make password=123456
 
4、证书生成完成后,会在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
证书生成完成后,会在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.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
 
            
                                            
                                            
                                            
发表评论