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

使用Azure IoT Hub Device Client连接RabbitMQ失败求助

Azure IoT Hub 迁移至 RabbitMQ 认证问题排查
  • 正在评估从Azure IoT Hub迁移到RabbitMQ的可行性,暂不讨论C2D和Twins相关功能,聚焦认证环节;且无法更换嵌入式系统的MQTT客户端。
  • 已部署包含所需证书的RabbitMQ Docker容器,使用MQTTnet编写的控制台应用可通过SSL证书正常连接,但使用Microsoft.Azure.Devices.Client客户端连接时失败。
  • 发现该客户端会自动生成格式为DOMAINNAME/DEVICEID/?api-version=2020-09-30&DeviceClientType=.NET%2F1.41.2%20%28....的用户名,且密码为空;在原本正常运行的控制台应用中添加该用户名和空密码后,同样出现连接失败问题。
  • 尝试通过设备证书的通用名(CN为powershell-test,即设备ID)进行认证,但无论如何配置,只要传入上述用户名和空密码,连接就会失败。

RabbitMQ 配置信息

已启用rabbitmq_mqtt、rabbitmq_auth_mechanism_ssl、rabbitmq_tracing插件,自定义配置文件如下(已替换令牌且可正常运行):

listeners.ssl.default = 5671

ssl_options.cacertfile = /etc/rabbitmq/certificates/$CACertificateName$
ssl_options.certfile   = /etc/rabbitmq/certificates/$ServerCertificateName$
ssl_options.keyfile    = /etc/rabbitmq/certificates/$ServerKeyName$
ssl_options.verify     = verify_peer
ssl_options.fail_if_no_peer_cert = true

mqtt.listeners.tcp.default = 1883
mqtt.listeners.ssl.default = 8883
mqtt.allow_anonymous  = false

## Number of Erlang processes that will accept connections for the TCP
## and TLS listeners.
##
# mqtt.num_acceptors.tcp = 10
# mqtt.num_acceptors.ssl = 10

mqtt.vhost            = /
mqtt.exchange         = amq.topic
# 24 hours by default
mqtt.max_session_expiry_interval_seconds = 86400
mqtt.prefetch         = 10

# Authentication
auth_mechanisms.1 = EXTERNAL
auth_mechanisms.2 = PLAIN
auth_mechanisms.3 = AMQPLAIN

ssl_cert_login_from = common_name
log.file.level = debug
log.console.level = info

问题咨询

是否有办法强制忽略传入的用户凭据?或者有其他解决方案?目前观察到只要传入认证信息,RabbitMQ就会跳过SSL证书验证。附RabbitMQ日志截图显示相关认证失败信息。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:38:11