RabbitMQ + TSL 实现安全访问
RabbitMQ + TSL 实现安全访问
前段时间,公司有台服务器需要安装 RabbitMQ 进行消息传输,对 MQ 服务的安全有着严格的要求。
- RabbitMQ 版本需要大于等于 3.6.9
- 不能使用 guest 用户
- 要求暴露外网的端口需要有 SSL 安全协议
这里就简单说说用户的配置与端口 SSL 的配置,如果大家配置自签证书出现问题,并且无法解决,可以尝试我的方法。
配置环境
- RabbitMQ 3.8.1
- SpringBoot 2.2.6.RELEASE
maven 配置
<!--rabbitmq-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
用户的配置
# 查看 rabbitmq 有关用户的命令
$ rabbitmqctl help | grep useradd_user Creates a new user in the internal databaseauthenticate_user Attempts to authenticate a user. Exits with a non-zero code if authentication fails.change_password Changes the user passwordclear_password Clears (resets) password and disables password login for a userdelete_user Removes a user from the internal database. Has no effect on users provided by external backends such as LDAPlist_users List user names and tagsset_user_tags Sets user tagsclear_permissions Revokes user permissions for a vhostclear_topic_permissions Clears user topic permissions for a vhost or exchangelist_permissions Lists user permissions in a virtual hostlist_user_permissions Lists permissions of a user across all virtual hostslist_user_topic_permissions Lists user topic permissionsset_permissions Sets user permissions for a vhostset_topic_permissions Sets user topic permissions for an exchangeset_operator_policy Sets an operator policy that overrides a subset of arguments in user policies
# 创建用户 admin, 密码是 ***
$ rabbitmqctl add_user admin ***
# 设置 admin 为超级管理员
$ rabbitmqctl set_user_tags admin administrator
# 授权远程访问
$ rabbitmqctl set_permissions -p / admin "." "." ".*"
# 删除 guest 用户
$ rabbitmqctl delete_user guest
# 启动后台插件
$ rabbitmq-plugins enable rabbitmq_management
$ rabbitmqctl stop
$ rabbitmq-server -detached
如果不习惯使用命令行,可以直接登录 web 管理界面进行配置。
服务器端口 SSL 的配置
按照网络上的步骤,自签 CA 证书,生成服务器和客户端公私钥,之后进行程序连接。但是我这里试了多遍,还是出现问题,找了一天都没能很好解决。最后不按照他们的流程,自行按照自己的想法去做,得以解决问题。官网的配置步骤也挺详细,可以参考地址。
首先我们要知道了解现有的证书之间的关系,最后才能准确的知道我们到底需要些什么。这里推荐一篇博文–各种安全证书间的关系及相关操作
很明显,在官网的推荐中,我们使用的是 Base64 编码的证书(PEM)。PEM 它的形式为:-----BEGIN XXXX-----
,与结尾的 -----END XXXX-----
对应。具有 .pem,.crt, .cer, .key
这样的扩展名。而 rabbitmq 所需要的文件配置有三个,如下
listeners.ssl.default = 5671ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile = /path/to/server_certificate.pem
ssl_options.keyfile = /path/to/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = true
配置项 | 描述 | |
---|---|---|
listeners.ssl.default | 默认的 TSL 连接端口 | |
ssl_options.cacertfile | 证书颁发机构 (CA) 捆绑文件路径 | |
ssl_options.certfile | 服务器证书文件路径 | |
ssl_options.keyfile | 服务器私钥文件路径 | |
ssl_options.verify | ||
ssl_options.fail_if_no_peer_cert | ||
RabbitMQ 所使用的是三个证书,与 apache 服务绑定的证书一样,在证书导出的时候选择 apache 证书导出即可。
导出后会有三个文件,ca_bundle.crt、*.mufeng.info.crt、*.mufeng.info_key.key,分别对应 RabbitMQ 中的ssl_options.cacertfile、 ssl_options.certfile、ssl_options.keyfile 所要指定的文件。(crt、key 都是 PEM 格式文件)
注:如果是本地测试,可以在 hosts 中对 127.0.0.1 进行域名映射。
RabbitMQ 重启
$ rabbitmqctl stop
$ rabbitmq-server -detached
SpringBoot 的 RabbitMQ 配置
spring:rabbitmq:host: *.mufeng.infoport: 5671username: ***password: ***ssl:enabled: truevirtual-host: /publisher-confirm-type: correlated
启动后即可连接 RabbitMQ AMQP/SSL。
RabbitMQ + TSL 实现安全访问相关推荐
- linux rabbitmq 安装之后无法访问15672
cd /etc/rabbitmq/ ls 发现这个文件夹是一个空的文件夹,执行下面的命令: ./rabbitmq-plugins enable rabbitmq_management 这个是什么原因, ...
- 消息队列之 RabbitMQ
消息队列之 RabbitMQ 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时候把这块的知识整理记录一下了. 市面上的消息队列产品有很 ...
- SpringBoot应用之消息队列rabbitmq
序 本文主要讲如何在Spring Boot里头使用rabbitmq进行消息收发. 准备rabbitmq集群 具体查看docker搭建rabbitmq集群这篇文章. 新建项目 配置项 #http://s ...
- RabbitMQ默认端口记录(亲测)
主要端口说明 4369 -- erlang发现口 5672 --client端通信口 15672 -- 管理界面ui端口 25672 -- server间内部通信口 1 2 3 4 5 6 7 举例说 ...
- Win10上rabbitmq 安装
前言 erlang 23.1 (下载地址) rabbitmq server v3.8.9 (下载地址) win 10 大致步骤 安装 erlang,并检查 erlang 是否安装成功 安装 rabbi ...
- RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建
环境配置 Ubuntu Server 18.04 RabbitMQ 3.6.10 安装之前 我们使用apt-get进行RabbitMQ安装,在安装之前,强烈建议您把apt源换位国内,大大增加下载安装的 ...
- RabbitMQ在Ubuntu上的环境搭建
环境配置 - Ubuntu Server 18.04 - RabbitMQ 3.6.10 安装之前 我们使用apt-get进行RabbitMQ安装,在安装之前,强烈建议您把apt源换位国内,大大增加下 ...
- docker安装rabbitmq步骤
docker安装 rabbitmq 下载镜像 docker pull rabbitmq:3.7.7-management 启动镜像(用户名和密码设置为guest guest) docker ...
- Spring Cloud Sleuth + Zipkin + RabbitMQ 监控微服务应用(二)
前提是已经安装并启动了RabbitMQ服务. 1.Zipkin server 依旧使用zipkin-server-2.12.6-exec.jar,启动命令如下,指定rabbitmq的ip和访问账号密码 ...
最新文章
- git粘贴命令行_git进阶,ssh和命令行
- 微服务并不能解决你的烂代码问题
- Matplotlib可视化散点图、配置X轴为对数坐标、并使用线条(line)连接散点图中的数据点(Simple Line Plot with Data points in Matplotlib)
- 总结一下MySQL中的锁机制
- 自定义获取html元素对象的7种方法。
- 图文:知乎千万级高性能长连接网关是如何搭建的?
- 【机器学习算法】XGBoost
- FreeBSD挂截U盘和光盘
- python:__new__()与__init__()
- java 接口隔离_《Java设计模式及实践》—1.5.4 接口隔离原则
- linux 网络 PING IP可以通,ping域名ping不通
- css高度自适应以及高度塌陷总结
- 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes
- mysql语句命令_MySQL语句和命令大全
- 【转】Postman 使用方法详解
- ubuntu sftp服务器搭建
- 判断一元二次方程完整版(有无虚根)
- windows多线程同步机制---原子锁
- android ptp 源码分析,ptp增加豆瓣评分
- Next.js基本使用
热门文章
- JVM源码分析之Attach机制实现完全解读
- maven项目-加载不到spring文件,BeanFactory not initialized or already closed - call 'refresh' bef
- ubuntu18.04 HP笔记本合上盖子不休眠不断网
- 2029年会实现通用人工智能吗?
- 【全国大学生IoT设计竞赛】安谋科技灵动赛题国赛一等奖分享:多足仿生机器人
- 香港大屿山祈福线路攻略
- Sigmastar平台_锐化调试思路
- React---解决跨域
- mt6739耳机通道配置外置功放
- 2.1 压力泊松方程(OpenFOAM理论笔记系列)