Azure IoT中心证书

时间:2017-01-06 10:17:12

标签: azure ssl 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 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 个答案:

答案 0 :(得分:3)

我已经解决了这个问题:

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

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

我已将Paho用作Mqtt客户端。

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

答案 1 :(得分:3)

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

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

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