如何使用 mosquitto_sub 和证书订阅 azure 事件网格

问题描述 投票:0回答:2

我正在按照本教程使用 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生成的证书工作)

问题是否与证书生成过程中必须输入的密码有关?

mqtt mosquitto client-certificates azure-eventgrid libmosquitto
2个回答
0
投票

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);


0
投票

你做过这个工作吗?我对同样的事情感兴趣。

© www.soinside.com 2019 - 2024. All rights reserved.