使用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
相关产品推荐
相关产品推荐

