You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Docker部署的RabbitMQ明文认证?配置操作指引

RabbitMQ Docker镜像禁用明文认证操作指引

前置说明

  • 官方RabbitMQ镜像默认账号为guest,默认密码guest,属于弱配置,修复时同步替换为自定义强密码即可。
  • 所有配置均通过宿主机挂载文件传入容器,不需要进入容器内部修改文件,重启、升级镜像时配置不会丢失。
  • 以下提供两种修复方案,可根据自身场景选择。

方案一:无证书快速修复(适合测试/内网非核心场景)

该方案无需生成/申请证书,仅通过禁用明文认证机制即可通过漏洞扫描,配置成本最低。注意该方案仅保证认证过程不传输明文密码,业务数据本身仍走明文传输,不建议核心生产环境使用。

  1. 在宿主机创建配置目录,例如/data/rabbitmq/config
  2. 在该目录下新建rabbitmq.conf配置文件,写入以下内容:
# 监听5672默认AMQP端口
listeners.tcp.default = 0.0.0.0:5672
# 仅启用非明文的SCRAM认证机制,直接禁用PLAIN、AMQPLAIN两类明文认证
auth_mechanisms.1 = SCRAM-SHA-256
auth_mechanisms.2 = SCRAM-SHA-1
# 替换默认弱密码账号
default_user = rabbit_admin
default_pass = 替换为12位以上包含大小写、数字、特殊字符的强密码
# 禁用默认guest账号的远程访问权限
loopback_users.guest = true

注意:使用该方案时,客户端连接配置需要指定认证机制为SCRAM-SHA-256,否则会出现认证失败,目前主流语言的RabbitMQ客户端均原生支持该机制。

  1. 启动容器时挂载该配置文件,启动命令参考:
docker run -d \
  --name rabbitmq \
  -p 5672:5672 \
  -p 15672:15672 \
  -v /data/rabbitmq/config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
  -v /data/rabbitmq/data:/var/lib/rabbitmq \
  --restart always \
  rabbitmq:latest

方案二:TLS全链路加密修复(适合生产/合规要求高的场景)

该方案为官方推荐的标准修复方案,认证、数据传输全程走TLS加密,彻底解决明文风险,满足等保、合规扫描要求。

  1. 在宿主机创建配置、证书存储目录,例如/data/rabbitmq/config、/data/rabbitmq/certs
  2. 执行以下命令生成自签证书(生产环境可直接替换为正规CA签发的证书),执行过程中所有提示直接回车即可:
# 生成CA私钥
openssl genrsa -out /data/rabbitmq/certs/ca_key.pem 2048
# 生成CA根证书
openssl req -x509 -new -nodes -key /data/rabbitmq/certs/ca_key.pem -sha256 -days 3650 -out /data/rabbitmq/certs/ca_cert.pem
# 生成服务端私钥
openssl genrsa -out /data/rabbitmq/certs/server_key.pem 2048
# 生成服务端证书签名请求
openssl req -new -key /data/rabbitmq/certs/server_key.pem -out /data/rabbitmq/certs/server_csr.pem
# 用CA签发服务端证书
openssl x509 -req -in /data/rabbitmq/certs/server_csr.pem -CA /data/rabbitmq/certs/ca_cert.pem -CAkey /data/rabbitmq/certs/ca_key.pem -CAcreateserial -out /data/rabbitmq/certs/server_cert.pem -days 3650 -sha256
# 配置目录权限,保证容器内进程可读
chmod 755 /data/rabbitmq/certs -R
  1. 在/data/rabbitmq/config目录下新建rabbitmq.conf配置文件,写入以下内容:
# 如需完全禁用非加密端口,注释掉下面这行即可
# listeners.tcp.default = 0.0.0.0:5672

# 配置TLS加密AMQP端口,默认端口为5671
listeners.ssl.default = 0.0.0.0:5671
# 容器内证书路径,和后续挂载路径对应
ssl_options.cacertfile = /etc/rabbitmq/certs/ca_cert.pem
ssl_options.certfile = /etc/rabbitmq/certs/server_cert.pem
ssl_options.keyfile = /etc/rabbitmq/certs/server_key.pem
# 仅允许安全的TLS版本,禁用老旧不安全的SSLv3、TLS1.0、TLS1.1
ssl_options.versions.1 = tlsv1.3
ssl_options.versions.2 = tlsv1.2
# 启用非明文认证机制,兼容客户端证书认证
auth_mechanisms.1 = SCRAM-SHA-256
auth_mechanisms.2 = SCRAM-SHA-1
auth_mechanisms.3 = EXTERNAL

# 账号配置
default_user = rabbit_admin
default_pass = 替换为12位以上包含大小写、数字、特殊字符的强密码
loopback_users.guest = true

# 如需给管理界面开启HTTPS,添加以下配置
management.ssl.port = 15671
management.ssl.cacertfile = /etc/rabbitmq/certs/ca_cert.pem
management.ssl.certfile = /etc/rabbitmq/certs/server_cert.pem
management.ssl.keyfile = /etc/rabbitmq/certs/server_key.pem
  1. 启动容器时挂载配置、证书目录,端口映射对应调整,启动命令参考:
docker run -d \
  --name rabbitmq \
  # 如果保留非加密5672端口则添加下面这行映射
  # -p 5672:5672 \
  -p 5671:5671 \
  -p 15672:15672 \
  -p 15671:15671 \
  -v /data/rabbitmq/config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
  -v /data/rabbitmq/certs:/etc/rabbitmq/certs \
  -v /data/rabbitmq/data:/var/lib/rabbitmq \
  --restart always \
  rabbitmq:latest

验证修复结果

  • 容器启动后等待30秒,执行docker logs rabbitmq查看运行日志,无报错即为启动成功
  • 用漏洞扫描工具重新探测对应端口,不会再触发「允许明文认证」的警告
  • 客户端连接时,方案一使用5672端口+SCRAM认证机制,方案二使用5671端口+TLS加密连接即可正常访问

内容的提问来源于stack exchange,提问作者Sunil Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:57:14