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

RabbitMQ 3.10.6 SSL连接报错no_suitable_ciphers求助

解决RabbitMQ 3.10.6+Erlang 24 SSL连接报错no_suitable_ciphers的问题

问题根源

Erlang 24与RabbitMQ 3.10对SSL/TLS的默认配置比旧版(Erlang 19+RabbitMQ 3.7)严格得多:

  • 默认禁用了TLS 1.0、TLS 1.1等旧协议版本
  • 默认剔除了DES、3DES、RC4等弱加密套件
    你的客户端仍在使用旧版兼容的协议或套件,导致服务端无法匹配,触发no_suitable_ciphers错误。证书本身无问题(旧版可用即可证明),核心是加密协商不兼容。

解决步骤

1. 确认客户端的SSL能力

先明确客户端支持的TLS版本和加密套件:

  • 若有OpenSSL环境,可执行以下命令测试:
    # 测试TLS 1.1连接兼容性
    openssl s_client -connect 你的MQ地址:5671 -tls1_1
    # 测试TLS 1.2连接兼容性
    openssl s_client -connect 你的MQ地址:5671 -tls1_2
    # 查看客户端支持的所有加密套件
    openssl ciphers -v
    
    如果TLS 1.1能连通但1.2不行,说明客户端仅支持旧协议;若所有TLS版本都失败,说明客户端使用的套件不在服务端允许列表内。

2. 修改RabbitMQ的SSL配置

在rabbitmq.conf中添加协议版本和加密套件配置,放宽限制(需确保业务场景允许):

listeners.ssl.default = 5671
ssl_options.verify               = verify_none
ssl_options.fail_if_no_peer_cert = false
ssl_options.cacertfile           = C:\Voyage Manager\RabbitMQ\Certificates\Server\cacert.pem
ssl_options.certfile             = C:\Voyage Manager\RabbitMQ\Certificates\Server\cert.pem
ssl_options.keyfile              = C:\Voyage Manager\RabbitMQ\Certificates\Server\key.pem
# 添加允许的TLS版本(根据客户端支持情况调整)
ssl_options.versions.1 = tlsv1.2
ssl_options.versions.2 = tlsv1.1
# 添加兼容旧版的加密套件列表
ssl_options.ciphers = ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,AES256-GCM-SHA384,AES128-GCM-SHA256,AES256-SHA256,AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,AES256-SHA,AES128-SHA

注意:套件列表可根据客户端实际支持的内容删减,无需全部保留。

3. 重启RabbitMQ服务

在PowerShell中执行命令重启服务:

net stop RabbitMQ && net start RabbitMQ

4. 验证配置生效

用RabbitMQ自带工具查看当前SSL配置:

rabbitmq-diagnostics ssl_help

输出内容会显示允许的TLS版本和加密套件,确认包含你添加的配置项。

长期优化建议

  • 优先升级客户端,使其支持TLS 1.2+和现代加密套件,避免依赖弱加密配置,提升整体安全性。
  • 检查证书签名算法:若证书使用SHA1签名(可通过openssl x509 -in cert.pem -text -noout查看),建议重新生成使用SHA256及以上算法的证书,Erlang 24对SHA1签名的证书有更严格的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:55:20