Azure IoT 中心证书

Max*_*sel 6 ssl azure x509 iot

我正在尝试使用 Mqtt 在 Azure IoT 中心发布一些数据。我已经使用 SAS 令牌成功发布了一些数据。

但是我的客户想要一个 x509 自生成和自签名证书。Azure 支持这一点,但没有提供太多相关信息。(https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#supported-x509-certificates

自生成和自签名的 X-509 证书。设备制造商或内部部署人员可以生成这些证书并将相应的私钥(和证书)存储在设备上。为此,您可以使用 OpenSSL 和 Windows SelfSignedCertificate 实用程序等工具。

注意 IoT 中心不需要或存储整个 X.509 证书,只需要指纹。

我所做的是创建了一个 CA 证书和密钥。

$openssl req -newkey rsa:2048 -x509 -nodes -sha256 -days 365 -extensions v3_ca -keyout ca.key -out ca.crt
Run Code Online (Sandbox Code Playgroud)

创建客户端密钥和签名请求

$openssl genrsa -out client.key 2048

$openssl req -new -sha256 -out client.csr -key client.key
Run Code Online (Sandbox Code Playgroud)

签署请求并创建证书

$openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl -out client.crt -days 365
Run Code Online (Sandbox Code Playgroud)

我已将客户端密钥和证书上传到调制解调器。并插入客户端证书的指纹。

我的调制解调器可以成功连接到myhub.azure-devices.net/deviceId (port 8883) 但是当新数据到达时它无法解码它。

从这一点上我有点卡住了。我试过使用 MqttFx,但没有成功。

有人可以将我推向正确的方向吗?

Max*_*sel 3

我已经解决了这个问题:

配置的 CA 证书必须是 Azure 证书:CA 根证书 Azure SDK。我使用了巴尔的摩根证书。

客户端证书和密钥正确。客户端证书的 SHA1 指纹必须传送到 Azure IoT 中心。

我使用Paho作为 Mqtt 客户端。

最后,我在连接服务器时遇到了调制解调器错误。显然Modem内部的时间还是默认的(1-1-2004),Modem用当前时间(1-1-2004)检查证书的时间,结果是无效的,所以无法建立连接。