我正在按照本教程使用 Azure 事件网格(将其用作 MQTT 代理)来生成客户端证书Azure-event grid-generate-sample-client-certificate-and-thumbprint
我知道一切都是正确的,因为我可以按照教程中所述通过 MQTTX
发布/订阅但是到底怎么可能通过蚊子发布/订阅呢?
我尝试过:
mosquitto_sub -h host.azure.net -p 8883 -t "topic/test/#" --username client-device1 --cafile /home/daniel/.step/certs/root_ca.crt
Error: A TLS error occurred.
如果我使用生成的 client-device1-auth-ID.pem 也会出现同样的错误
如果你想使用 libmosquitto,它会变得更加混乱。 你在这里设置什么:
mosquitto_username_pw_set(_mosq, kUserName.c_str(), ???);
//or here:
mosquitto_tls_set(_mosq, cafile, capath, certfile, keyfile, callback);
所以我的问题是如何通过蚊子(_sub/_pub)连接到我的azure mqtt代理(通过MQTTX使用从Azure-event grid-generate-sample-client-certificate-and-thumbprint生成的证书工作) )
问题是否与证书生成过程中必须输入的密码有关?
3 个步骤使其发挥作用
1.) 客户端身份验证必须是“主题与身份验证名称匹配”
2.)你必须设置 mosquitto_int_option(_mosq, MOSQ_OPT_TLS_USE_OS_CERTS, true);
(即使您没有安装任何操作系统证书)
3.) mosquitto_tls_set(_mosq, nullptr, "L", pem.c_str(), key.c_str(), nullptr);
你做过这个工作吗?我对同样的事情感兴趣。