为 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. 使用 Kotlin DSL 编写网络爬虫

    本博文将会通过一个网络爬虫的例子,向你介绍 Kotlin 的基本用法和其简洁有力的 DSL. 关于DSL 按照维基百科的说法,DSL(domain-specific language) 是一种专注于某 ...

  2. 绘制三元图、颜色空间图:R语言代码

      本文介绍基于R语言中的Ternary包,绘制三元图(Ternary Plot)的详细方法:其中,我们就以RGB三色分布图为例来具体介绍.   三元图可以从三个不同的角度反映数据的特征,因此在很多领 ...

  3. PS-AXI-GPIO-流水灯设计

    PS-AXI-GPIO-流水灯设计 1.实验目的 在了解了AXI协议的基本内容后,通过已经设计好的AXI的IP核来了解实际设计中AXI的工作原理和设计原理是必要的.这个实验以前实际上按照教程做过,但是 ...

  4. C++设计模式 - 桥模式(Bridge)

    单一职责模式: 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任. 典型模式 Decorator Bridge ...

  5. Linux——ssh登录很慢解决方法

    1.背景 在同一机房中,有多台安装了CentOS 7操作系统的服务器,它们的配置除了IP地址不同外基本相同.这些服务器的资源利用率都不高,但在使用SSH连接时,发现有几台服务器连接速度较慢,可能需要等 ...

  6. RedisTemplate 的简单使用

    redisTemplate.opsForValue() 方法可以获得一个 Redis String 的操作类,通过该类可以执行一系列字符串类型数据的操作,例如获取.设置.删除数据等. // 示例 1: ...

  7. 前端使用 Konva 实现可视化设计器(2)

    作为继续创作的动力,继续求 github Star 能超过 50 个(目前惨淡的 0 个),望多多支持. 源码 示例地址 在上一章,实现了"无限画布"."画布移动&quo ...

  8. 使用OHOS SDK构建libjpeg-turbo

    参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/libjpeg-turb ...

  9. C 语言函数完全指南:创建、调用、参数传递、返回值解析

    C 语言中的函数 函数是一段代码块,只有在被调用时才会运行. 您可以将数据(称为参数)传递给函数. 函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用. 预定义函数 事实证明,您已 ...

  10. HDC2021技术分论坛:HarmonyOS内核技术大揭秘!

    作者:jikecheng,miaoxie,HarmonyOS内核技术专家 HarmonyOS整体框架分为四个层级,如图1所示.从上到下,依次为:第一层是应用层,主要涵盖系统应用.Launcher.设置 ...