为 RabbitMQ 服务器启用 SSL/TLS

为客户端和服务器生成自签名证书

为了启用 TLS/SSL,我们需要证书/密钥对。 这可以借助 OpenSSL 为客户端和服务器生成自签名证书。

  1. 生成自签名CA证书

    我们现在将使用 OpenSSL 创建所有必需的密钥和证书。 让我们开始创建 CA 证书。 确保所有证书都放在以下目录中:

    cd /home/chen/rabbitmq_server-3.11.6/ssl

    第一步是制作根私钥:

    openssl genrsa -out RMQ-CA-Key.pem

    下一步是签署证书。

    openssl req -new -key RMQ-CA-Key.pem -x509 -days 100 -out RMQ-CA-cert.pem

    运行上述命令后,交互式脚本将启动并询问各种信息。 我们将在此处提供所有必需的详细信息。

    输入Common-Name (CN) 时需要注意要使用服务器 IP 或 hostname。 完成后,这将生成根 CA 证书。

    现在,我们将创建服务器密钥和服务器证书。

  2. 生成服务器密钥

    openssl genrsa -out RMQ-server-key.pem
  3. 生成 CSR(证书签名请求):

    openssl req -new -key RMQ-server-key.pem -out RMQ-signingrequest.csr

    当我们运行上面的命令时,它会询问各种参数(Country、State、ON、OU 等),我们还需要选择一个 common name (CN)。 这最好是服务器的 IP 或 hostname。

  4. 生成自签名证书

    openssl x509 -req -days 100 -in RMQ-signingrequest.csr -CA RMQ-CA-cert.pem -CAkey RMQ-CA-Key.pem -CAcreateserial -out RMQ-server-cert.pem

    最后,我们需要使用它们来设置 TLS/SSL。

如果你打算启用双向验证,还需要执行如下额外步骤,来生成客户端证书和密钥:

  1. 生成客户端密钥

    openssl genrsa -out RMQ-client-key.pem
  2. 生成 CSR(证书签名请求):

    openssl req -new -key RMQ-client-key.pem -out RMQ-signingrequest.csr

    当我们运行上面的命令时,它会询问各种参数(Country、State、ON、OU 等),我们还需要选择一个common name (CN)。 这最好是客户端的 IP 或 hostname。

  3. 生成自签名证书

    openssl x509 -req -days 100 -in RMQ-signingrequest.csr -CA RMQ-CA-cert.pem -CAkey RMQ-CA-Key.pem -CAcreateserial -out RMQ-client-cert.pem

最终,我们生成了以下文件:

chenjing@LAPTOP-IH0640SI:/home/chen/rabbitmq_server-3.11.6/ssl$ ls -l
drwxrwxrwx 1 chenjing chenjing 4096 Feb 18 11:54 ./
drwxrwxrwx 1 chenjing chenjing 4096 Feb 18 12:00 ../
-rwxrwxrwx 1 chenjing chenjing 1679 Feb 18 11:40 RMQ-CA-Key.pem
-rwxrwxrwx 1 chenjing chenjing 1452 Feb 18 11:37 RMQ-CA-cert.pem
-rwxrwxrwx 1 chenjing chenjing 1452 Feb 18 11:37 RMQ-server-cert.pem
-rwxrwxrwx 1 chenjing chenjing 1452 Feb 18 11:37 RMQ-server-key.pem
-rwxrwxrwx 1 chenjing chenjing 1338 Feb 18 11:40 RMQ-client-cert.pem
-rwxrwxrwx 1 chenjing chenjing 1679 Feb 18 11:37 RMQ-client-key.pem

在 RabbitMQ 服务器中启用 TLS/SSL 支持

要在 RabbitMQ 中启用 TLS 支持,我们需要在以下位置创建一个名为 rabbitmq.conf 的配置文件:

cd ~/rabbitmq_server-3.11.6/etc/rabbitmq/
vim rabbitmq.conf

然后,将以下配置代码粘贴到文件中:

listeners.ssl.default = 5671
ssl_options.cacertfile = /home/chen/rabbitmq_server-3.11.6/ssl/RMQ-CA-cert.pem
ssl_options.certfile = /home/chen/rabbitmq_server-3.11.6/ssl/RMQ-server-cert.pem
ssl_options.keyfile = /home/chen/rabbitmq_server-3.11.6/ssl/RMQ-server-key.pem
# 启用双向认证
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert=true # 如果不启用双向认证,请取消注释下面两行
#ssl_options.verify = verify_none
#ssl_options.fail_if_no_peer_cert = false

使用 RabbitMQ Assistant 连接

RabbitMQ Assistant下载地址:http://www.redisant.cn/rta

如果打算使用 RabbitMQ Assistant 进行连接,客户端证书需要使用 pfx 格式:

openssl x509 -in RMQ-client-cert.pem -out RMQ-client-cert.crt
openssl pkcs12 -export -in RMQ-client-cert.crt -inkey RMQ-client-key.pem -out client.pfx

更多参考资料见以下链接:

为 RabbitMQ 服务器启用 SSL/TLS的更多相关文章

  1. Ubuntu Linux服务器搭建SSL/TLS(https)(在StartSSL可以得到免费证书)

    目录 1 生成公钥和私钥对 2 公钥提交到CA机构签发一个crt证书 3 配置证书链 4 在Apache里开启SSL支持并配置crt证书和私钥 5 配置HSTS (可选) 6 总结 首先SSL/TLS ...

  2. Linux—服务器SSL/TLS快速检测工具(TLSSLed)

    一.下载TLSSLed [root@localhost ~]# yum install tlssled 二.服务器SSL/TLS快速检测工具TLSSLed 现在SSL和TLS被广泛应用服务器的数据加密 ...

  3. 使用openSSL开源工具进行SSL/TLS 安全测试

    本文介绍了使用半自动化工具执行SSL&TLS安全性评估的过程,以及如何使用手动及工具的测试方法验证并发现问题.目的是优化TLS和SSL安全测试流程,帮助信息安全顾问在渗透测试时在TLS / S ...

  4. SSL&TLS渗透测试

    什么是TLS&SSL? 安全套接字层(SSL)和传输层安全(TLS)加密通过提供通信安全(传输加密)和为应用程序如网络.邮件.即时消息和某些虚拟私有网络(VPN)提供隐私的方式来确保互联网和网 ...

  5. MsSQL使用加密连接SSL/TLS

    说明 应用程序通过未加密的通道与数据库服务器通信, 这可能会造成重大的安全风险.在这种情况下, 攻击者可以修改用户输入的数据, 甚至对数据库服务器执行任意 SQL 命令. 例如,当您使用以下连接字符串 ...

  6. SQL Server使用加密连接SSL/TLS (转载)

    说明 应用程序通过未加密的通道与数据库服务器通信, 这可能会造成重大的安全风险.在这种情况下, 攻击者可以修改用户输入的数据, 甚至对数据库服务器执行任意 SQL 命令.例如,当您使用以下连接字符串时 ...

  7. SSL/TLS 安全测试

    本文介绍了使用半自动化工具执行SSL&TLS安全性评估的过程,以及如何使用手动及工具的测试方法验证并发现问题.目的是优化TLS和SSL安全测试流程,帮助信息安全顾问在渗透测试时在TLS / S ...

  8. 手把手教你为基于Netty的IM生成自签名SSL/TLS证书

    1.引言 对于IM聊天应用来说,为了提升安全性,对聊天消息加密是常规操作. 众所周之,Netty是高性能的Java NIO网络通信框架,因而用Netty来写IM是再正常不过了.网上关于为Netty生成 ...

  9. SSL/TLS通信

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/31 复习基本概念 对称密码:加密和解密使用同一密匙. 公钥密码: ...

  10. (十四)RabbitMQ消息队列-启用SSL安全通讯

    原文:(十四)RabbitMQ消息队列-启用SSL安全通讯 如果RabbitMQ服务在内网中,只有内网的应用连接,我们认为这些连接都是安全的,但是个别情况我们需要让RabbitMQ对外提供服务.这种情 ...

随机推荐

  1. Kafka之Producer网络传输

    一.背景 在Kafka的组成部分(Broker.Consumer.Producer)中,设计理念迥异,每个部分都有自己独特的思考.而把这些部分有机地组织起来,使其成为一个整体的便是「网络传输」.区别于 ...

  2. AI+软件工程:10倍提效!用ChatGPT编写系统功能文档

    系统功能文档是一种描述软件系统功能和操作方式的文档.它让开发团队.测试人员.项目管理者.客户和最终用户对系统行为有清晰.全面的了解. 通过ChatGPT,我们能让编写系统功能文档的效率提升10倍以上. ...

  3. KingbaseES 数据库中不同user的视图访问授权

    前言 本文的目的是实现u1用户访问ud用户下的视图权限. 测试 登录system用户并创建schema,user,并授权schema的有关权限给ud用户 TEST=# select current_u ...

  4. KingbaseES 物理备库影响主库的性能与垃圾回收

    前言 KingbaseES 物理备库有些配置可能影响到主库性能,或者反过来说主库某些配置也会影响到备库.终极原因还是heap tuple 和dead tuple放在一起导致的. 首先,原理上讲,物理备 ...

  5. Linux C++ 连接 MySQL

    安装MySQL 可以参考这篇文章<在Ubuntu上安装MySQL> 连接 具体可以看官方的MySQL参考手册 示例代码 #include<iostream> #include& ...

  6. 一文搞懂Java的工具类和API

    1.工具类(Utility Class) 在Java中,工具类通常包含一系列静态方法,用于执行常见的任务,这些任务可能不直接关联到特定的业务逻辑,而是用于处理一些基础的数据转换.字符串操作.文件操作等 ...

  7. #区间dp,离散#D 弱者对决

    分析 设\(dp[i][j][x]\)表示当前区间为\([i,j]\),最小值为\(x\)的最大总分, 状态转移方程可以用后缀最大值优化到\(O(n^3m)\),主要难点是输出方案 后缀最大值需要记录 ...

  8. Qt:Qt自适应高分辨率屏幕

    现在的电脑分辨率越来越高,DPI也越来越大,使用Qt创建出来的界面,在小分辨率电脑上显示的很好,但是在大分辨率电脑上显示异常,感觉边框被压缩了,看起来很不协调. 从Qt 5.6 还是从Qt 5.14 ...

  9. 家庭实验室系列文章-如何迁移树莓派系统到更大的 SD 卡?

    前言 其实这个专题很久很久之前就想写了,但是一直因为各种原因拖着没动笔. 因为没有资格,也没有钱在一线城市买房 (); 但是在要结婚之前,婚房又是刚需. 我和太太最终一起在一线城市周边的某二线城市买了 ...

  10. 树模型-CART树

    分类回归树CART CART树是后面所有模型的基础,也是核心树 在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择.在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特 ...