【问题标题】:Azure IoT Hub CertificateAzure IoT 中心证书
【发布时间】:2021-09-08 22:18:17
【问题描述】:

我正在尝试使用 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

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

$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 ssl x509 iot


【解决方案1】:

对于想要使用 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 客户端。

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

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多