RabbitMQ 加密 AMQP 口
RabbitMQ 的加密 AMQP 端口:amqps 默认 5671,明文 AMQP 是 5672,管理台在 15672。两者承载同一套交换机与队列语义,区别只在传输是否加密;连接串写成 amqps:// 即走 5671。
基本信息
| 服务 | RabbitMQ AMQP over TLS |
|---|---|
| 协议 | TCP/TLS(AMQP 0-9-1) |
| 默认端口 | 5671(明文 5672、管理台 15672) |
| 证书 | 服务端证书与客户端信任链 |
| 暴露面 | 应用网段,启用证书校验 |
典型使用场景
- 敏感业务消息的加密传输
- 跨机房或跨租户链路上的消息通道
- 合规要求下的证书化改造
- 调试证书与握手问题
- 明文口与加密口并行运行做灰度迁移
监听与握手测试
监听与握手测试
ss -lntp | grep -E '567[12]|15672'
openssl s_client -connect mq01:5671 -servername mq01 </dev/null | head -5
# 客户端连接串: amqps://app:***@mq01:5671/%2f
# 服务端配置项: listeners.ssl.default = 5671排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 监听 | ss -lntp | grep 5671 | 端口不在:TLS 监听未配置或被防火墙拦 |
| 握手 | openssl s_client 看证书链 | 握手失败:先查证书与 SNI,再怀疑网络 |
| 信任链 | 客户端信任的 CA 与有效期 | 校验失败:服务端日志往往只有一行错误 |
| 并存情况 | 两个端口是否都开着 | 只开 5671:未升级的老客户端直接连不上 |
证书链路或 SNI 配错时报错通常很笼统,只有握手失败几个字。排查顺序是先看证书有效期与信任链,再核对服务端 SNI 配置,最后才怀疑网络;顺序颠倒会浪费大量时间。
为什么值得多花这一步
消息队列里流动的往往是最敏感的业务数据与凭据,明文链路下同网段任何一台主机都可能抓取到完整消息体,而这些数据通常没有额外的字段级加密。启用 TLS 的成本只是证书与配置,收益却是整条链路的机密性。
迁移期常见做法是两个端口都在:先让服务端支持 5671,再逐批把应用切到 amqps,最后关闭 5672;一次性关掉明文口会让未升级的客户端在无预告的情况下全部失败。
为省事继续用 5672 明文:Broker 口令与业务消息在同一网段可直接被抓取还原。
对比两个端口上的连接数能判断迁移进度:5672 活跃连接下降、5671 上升说明客户端在陆续切换;两个都很低则要怀疑有应用根本没连上。