我正在尝试使用 Mqtt 在 Azure IoT 中心发布一些数据。
我已使用 SAS 令牌成功发布了一些数据。
但我的客户想要一个 x509 自生成和自签名证书。
Azure 支持这一点,但没有提供太多相关信息。
(https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#supported-x509-certificates https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#supported-x509-certificates)
自生成和自签名的 X-509 证书。一个装置
制造商或内部部署者可以生成这些证书并
将相应的私钥(和证书)存储在设备上。
您可以使用 OpenSSL 和 Windows SelfSignedCertificate 等工具
用于此目的的实用程序。
NoteIoT 中心不需要或存储整个 X.509 证书,仅
指纹。
我所做的是创建 CA 证书和密钥。
$openssl req -newkey rsa:2048 -x509 -nodes -sha256 -days 365 -extensions v3_ca -keyout ca.key -out ca.crt
创建客户端密钥和签名请求
$openssl genrsa -out client.key 2048
$openssl req -new -sha256 -out client.csr -key client.key
签署请求并创建证书
$openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl -out client.crt -days 365
我已将客户端密钥和证书上传到调制解调器。
并插入客户端证书的指纹。
我的调制解调器可以成功连接到myhub.azure-devices.net/deviceId (port 8883)
但当新数据到达时,它无法对其进行解码。
从现在开始我有点陷入困境。我尝试过使用 MqttFx,但没有成功。
有人可以把我推向正确的方向吗?
对于那些想要使用 Azure IoT C# SDK 的人,我创建了一个基于 C# 的代码示例,向您展示如何将 OpenSSL 自签名和自生成的 X509 证书与在 Azure IoT 中心注册的设备关联,然后在后续运行时操作中使用证书(主要或辅助) - 特别是发送遥测消息。
您可以选择使用 MQTT 或 HTTPS 作为传输层。
https://github.com/tamhinsf/SimpleAzureIoTCerts/ https://github.com/tamhinsf/SimpleAzureIoTCerts/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)