为 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. 记录--uniapp 应用APP跳转微信小程序

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近APP项目开发完成,在评审会上老板提了一个需求,想在开发的APP上添加一个链接,可以跳转公司的小程序商城. 原以为会很复杂,结果只有短 ...

  2. shk_to_bram

    Entity: shk_to_bram File: shk_to_bram.v Diagram Description Company: FpgaPublish Engineer: FP Create ...

  3. KingbaseES V8R6集群运维案例之---repmgrd进程启动无法访问共享内存

    案例说明: KingbaseES V8R6集群在启动repmgrd进程时,出现'unable to write to shared memory'故障,导致repmgrd进程启动终止. 适用版本: K ...

  4. KingbaseES V8R6 Deallocate 语句使用说明

    用途 DEALLOCATE被用来释放一个之前PREPARE好的SQL语句.如果不显式地释放一个PREPARE语句,那么会话结束时会释放它. prepare语句类似oracle的绑定变量 绑定过程: 1 ...

  5. KingbaseES V8R6 集群运维案例 -- 归档失败导致 Switchover 失败

    案例说明: KingbaseES V8R6集群,备库在执行'repmgr standby switchover'时,切换失败,出现以下故障: 经检查发现是主库归档配置错误,主库出现归档失败导致. 适用 ...

  6. Selenium 八大元素定位方式

    UI自动化测本质无非就是: 定位元素 -> 操作元素 -> 模拟页面动作 -> 断言结果 -> 生成测试报告. 所以我们做UI自动化的第一步就是定位元素,如果连元素都定位不到就 ...

  7. #KM算法#UVA11383 Golden Tiger Claw

    题目 给定 \(n*n\) 的矩阵,现在给每行安排一个权值 \(x_i\),给每列安排一个权值 \(y_j\), 使得 \(x_i+y_j\geq a_{i,j}\),并且使 \(\sum_{i=1} ...

  8. #线段树#洛谷 4681 [THUSC2015]平方运算

    题目 给定一个数列 \(a\),维护以下两种操作 区间取平方 \(a[i]=a[i]^2\bmod p\) 区间和(不取模) \(p\) 为给定的小于 \(10^4\) 的数,\(n\leq 10^5 ...

  9. #树状数组,dp#洛谷 3506 [POI2010]MOT-Monotonicity 2

    题目 给出\(N\)个正整数\(a[1..N]\),再给出\(K\)个关系符号(>.<或=)\(s[1..k]\). 选出一个长度为\(L\)的子序列(不要求连续),要求这个子序列的第\( ...

  10. [易语言软件开源] [分享源码] 易语言D2D实现彩虹跑马灯

    注意使用了D2D1.1,部分win7用户可能用不了(win7以下也用不了) 不是单纯的一个彩虹条,是可以变幻的 其实也可以封装成GDI+的,但是GDI+占用比较大,就没有用 点击下载点击下载