小编Dea*_*lus的帖子

将Mosquitto连接到新的Azure MQTT后端

最近,Microsoft Azure在其服务中添加了MQTT后端.此服务使用TLS对其流量进行加密. 我无法连接Mosquitto和Microsoft Azure Cloud.

我用下载了服务器证书

echo -n | openssl s_client -connect mytarget.azure-devices.net:8883 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/test.cert
Run Code Online (Sandbox Code Playgroud)

然后尝试连接mosquitto_sub

mosquitto_sub -h mytarget.azure-devices.net -p 8883 -d -t devices/Device1/messages/events -i Device1 -u "mytarget.azure-devices.net/Device1" -P "SharedAccessSignature sr=snip&sig=snip&skn=snip"  --cafile /tmp/test.pem --insecure
Run Code Online (Sandbox Code Playgroud)

但是,永远不会建立连接.Mosquitto输出:

客户端Device1发送CONNECT错误:发生TLS错误.

我之前已成功将ssl上的mosquitto连接到亚马逊云端(虽然我获得了证书和私钥).所以我尝试添加客户端证书/密钥,这是我从AWS获得的,希望错误是mosquitto确实也需要这些文件.

mosquitto_sub -h mytarget.azure-devices.net -p 8883 -d -t devices/Device1/messages/events -i Device1 -u "mytarget.azure-devices.net/Device1" -P "SharedAccessSignature sr=snip&sig=snip&skn=snip"  --cafile /tmp/test.pem --cert certificate.pem.crt --key -private.pem.key --insecure --insecure
Run Code Online (Sandbox Code Playgroud)

但是,这没有帮助,也没有更改错误消息.

然后,我到mosquitto代码在github上,发现错误可能是造成该线路上的所以SSL_connect,这似乎是一个OpenSSL的功能.

有没有人让mosquitto连接到Microsoft Azure云或有任何指针在哪里看下一步?

编辑:

我似乎能够通过在socat上隧道传输SSL来发布:

socat openssl-connect:mytarget.azure-dices.net:8883,verify=0 tcp-l:8884,reuseaddr,fork …
Run Code Online (Sandbox Code Playgroud)

ssl azure mqtt mosquitto

1
推荐指数
1
解决办法
4732
查看次数

标签 统计

azure ×1

mosquitto ×1

mqtt ×1

ssl ×1