首页 > 解决方案 > Azure IoT SDK - 连接不被接受的问题

问题描述

我正在使用 Azure IoT SDK for C 尝试在 Azure IoT 门户上的集线器上预配设备。

我已按照说明生成签名证书并将其添加到门户,如此处所述https://github.com/Azure/azure-iot-sdk-c/blob/master/tools/CACertificates/CACertificateOverview.md

以及本教程中的https://kevinsaye.wordpress.com/2020/04/14/using-a-real-certificate-with-the-azure-iot-client-c-sdk-and-the-provisioning-服务/

当我使用所有更改运行示例代码 prov_dev_client_ll_sample.c 时,我不断收到以下授权错误。我已经为运行 Debian 的 X86-64 芯片构建并运行了此代码,并且还为 ARM 芯片进行了交叉编译,两者都产生了相同的错误。

在 Azure 门户上,我尝试创建一个关联证书的注册组,还尝试创建一个单独的注册,显式添加证书。没有任何效果。人们认为我的时钟可能已经过时了。但是,当我运行date时,它​​看起来不错。

任何帮助将不胜感激。我现在花了两天多的时间来解决这个问题。

Running provisioning appplication..
Provisioning API Version : 1.3.8
Iothub API Version: 1.3.8
Device Certificate Name File: Device_identity.txt
Device Certificate PEM File : Device_cert.pem
Device Private Key PEM File : Device_key.pem
Error: Time:Fri Jun 19 12:02:42 2020 File:/home/azure-iot-sdk- 
c/provisioning_client/src/prov_transport_mqtt_common.c Func:mqtt_operation_complete_callback Line:208 
Connection Not Accepted: 0x5: Not Authorized
Error: Time:Fri Jun 19 12:02:42 2020 File:/home/azure-iot-sdk- 
c/provisioning_client/src/prov_transport_mqtt_common.c Func:mqtt_error_callback Line:139 MQTT 
communication error
Error: Time:Fri Jun 19 12:02:42 2020 File:/home/azure-iot-sdk-
c/provisioning_client/src/prov_device_ll_client.c Func:on_transport_registration_data Line:771 
Failure 
retrieving data from the provisioning service
Failure encountered on registration PROV_DEVICE_RESULT_DEV_AUTH_ERROR
registration failed!
Press any enter to continue:

标签: cauthorizationx509azure-iot-hubazure-iot-sdk

解决方案


使用 X.509 证书将设备连接到 Azure IoT 中心有两种不同的场景:

  • 注册设备并将其直接连接到您的 IoT 中心
  • 使用设备预配服务将您的设备分配和注册到 IoT 中心,以便它可以连接。

此示例向您展示如何在使用 DPS 的情况下将设备直接连接到 IoT 中心:https ://github.com/Azure/azure-iot-sdk-c/tree/master/iothub_client/samples/iothub_ll_client_x509_sample 。该示例假定您使用https://github.com/Azure/azure-iot-sdk-c/blob/master/tools/CACertificates/CACertificateOverview.md中描述的脚本来生成密钥和证书。有关详细信息,请参阅:https ://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-x509ca-overview 。

此示例(您尝试运行的示例)向您展示了如何使用 DPS 将您的设备注册到 IoT 中心:https ://github.com/Azure/azure-iot-sdk-c/tree/master/provisioning_client/样本/prov_dev_client_sample。该示例使用模拟的硬件安全模块 (HSM) 来生成密钥和证书(而不是脚本)。有关如何运行此示例的详细信息,请参阅https://docs.microsoft.com/azure/iot-dps/quick-create-simulated-device-x509


推荐阅读