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 实现安全访问相关推荐

  1. linux rabbitmq 安装之后无法访问15672

    cd /etc/rabbitmq/ ls 发现这个文件夹是一个空的文件夹,执行下面的命令: ./rabbitmq-plugins enable rabbitmq_management 这个是什么原因, ...

  2. 消息队列之 RabbitMQ

    消息队列之 RabbitMQ 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时候把这块的知识整理记录一下了. 市面上的消息队列产品有很 ...

  3. SpringBoot应用之消息队列rabbitmq

    序 本文主要讲如何在Spring Boot里头使用rabbitmq进行消息收发. 准备rabbitmq集群 具体查看docker搭建rabbitmq集群这篇文章. 新建项目 配置项 #http://s ...

  4. RabbitMQ默认端口记录(亲测)

    主要端口说明 4369 -- erlang发现口 5672 --client端通信口 15672 -- 管理界面ui端口 25672 -- server间内部通信口 1 2 3 4 5 6 7 举例说 ...

  5. Win10上rabbitmq 安装

    前言 erlang 23.1 (下载地址) rabbitmq server v3.8.9 (下载地址) win 10 大致步骤 安装 erlang,并检查 erlang 是否安装成功 安装 rabbi ...

  6. RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建

    环境配置 Ubuntu Server 18.04 RabbitMQ 3.6.10 安装之前 我们使用apt-get进行RabbitMQ安装,在安装之前,强烈建议您把apt源换位国内,大大增加下载安装的 ...

  7. RabbitMQ在Ubuntu上的环境搭建

    环境配置 - Ubuntu Server 18.04 - RabbitMQ 3.6.10 安装之前 我们使用apt-get进行RabbitMQ安装,在安装之前,强烈建议您把apt源换位国内,大大增加下 ...

  8. docker安装rabbitmq步骤

    docker安装 rabbitmq 下载镜像 docker pull rabbitmq:3.7.7-management ​​​​​​启动镜像(用户名和密码设置为guest guest) docker ...

  9. Spring Cloud Sleuth + Zipkin + RabbitMQ 监控微服务应用(二)

    前提是已经安装并启动了RabbitMQ服务. 1.Zipkin server 依旧使用zipkin-server-2.12.6-exec.jar,启动命令如下,指定rabbitmq的ip和访问账号密码 ...

最新文章

  1. git粘贴命令行_git进阶,ssh和命令行
  2. 微服务并不能解决你的烂代码问题
  3. Matplotlib可视化散点图、配置X轴为对数坐标、并使用线条(line)连接散点图中的数据点(Simple Line Plot with Data points in Matplotlib)
  4. 总结一下MySQL中的锁机制
  5. 自定义获取html元素对象的7种方法。
  6. 图文:知乎千万级高性能长连接网关是如何搭建的?
  7. 【机器学习算法】XGBoost
  8. FreeBSD挂截U盘和光盘
  9. python:__new__()与__init__()
  10. java 接口隔离_《Java设计模式及实践》—1.5.4 接口隔离原则
  11. linux 网络 PING IP可以通,ping域名ping不通
  12. css高度自适应以及高度塌陷总结
  13. 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes
  14. mysql语句命令_MySQL语句和命令大全
  15. 【转】Postman 使用方法详解
  16. ubuntu sftp服务器搭建
  17. 判断一元二次方程完整版(有无虚根)
  18. windows多线程同步机制---原子锁
  19. android ptp 源码分析,ptp增加豆瓣评分
  20. Next.js基本使用

热门文章

  1. JVM源码分析之Attach机制实现完全解读
  2. maven项目-加载不到spring文件,BeanFactory not initialized or already closed - call 'refresh' bef
  3. ubuntu18.04 HP笔记本合上盖子不休眠不断网
  4. 2029年会实现通用人工智能吗?
  5. 【全国大学生IoT设计竞赛】安谋科技灵动赛题国赛一等奖分享:多足仿生机器人
  6. 香港大屿山祈福线路攻略
  7. Sigmastar平台_锐化调试思路
  8. React---解决跨域
  9. mt6739耳机通道配置外置功放
  10. 2.1 压力泊松方程(OpenFOAM理论笔记系列)