首页 文章

Azure IoT中心证书

提问于
浏览
4

我正在尝试使用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 Hub不需要或存储整个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,但没有运气 .

有人能把我推向正确的方向吗?

2 回答

  • 2

    对于那些想要使用Azure IoT C#SDK的人,我创建了一个基于C#的代码示例,向您展示如何将OpenSSL自签名和自生成的X509证书与在Azure IoT Hub中注册的设备相关联,然后在后续运行时操作中使用证书(主要或次要) - 特别是发送遥测消息 .

    您可以选择使用MQTT或HTTPS作为传输层 .

    https://github.com/tamhinsf/SimpleAzureIoTCerts/

  • 2

    我已经解决了这个问题:

    配置的CA证书必须是azure证书:CA Root Certificate Azure SDK . 我使用过巴尔的摩根证书 .

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

    我使用Paho作为Mqtt客户端 .

    最后我连接到服务器时出现调制解调器错误 . 调制解调器内部的时间显然仍处于默认状态(1-1-2004),并且调制解调器使用当前时间(1-1-2004)检查证书的时间,这是无效的,因此无法 Build 连接 .

相关问题