Azure Provisioning服务示例不适用于节点

时间:2018-04-23 12:59:02

标签: azure azure-iot-hub azure-iot-sdk

我按照node.js教程通过Azure DPS(设备配置服务)@ https://docs.microsoft.com/en-us/azure/iot-dps/quick-create-simulated-device-x509-node注册设备。 对于单个设备注册,它已成功,但当我尝试通过注册组注册设备时,它会失败。 我使用"create_test-cert.js root"生成我的根证书和

create_test-cert.js verification --ca {rootcertificate_cert
.pem} --key {rootcertificate_key.pem} --nonce {verificationKey}

验证。 我还used create_test-cert.js device {leafcertificate} {rootcertificate-name}来创建设备证书。 最后,我使用register_x509.js文件将我的设备注册到Azure。执行此文件我有以下错误

azure-iot-provisioning-device:X509Registration registrationId: first +0ms
  azure-iot-provisioning-device:PollingStateMachine register called for registrationId "first" +0ms
  azure-iot-provisioning-device:PollingStateMachine completed transition from disconnected to sendingRegistrationRequest +0ms
  azure-iot-provisioning-device-http:Http submitting PUT for first to /0ne00015676/registrations/first/register?api-version=2017-11-15 +0ms
  azure-iot-provisioning-device-http:Http {"registrationId":"first"} +0ms
  azure-iot-provisioning-device-http:Http error executing PUT: UnauthorizedError: Error: {"errorCode":401002,"trackingId":"e6b9c185-64c4-4535-8d23-a7625dd3e011","message":"Unauthorized","timestampUtc":"2018-04-23T12:21:56.1390465Z"} +353ms

错误代码“401002是IotHubUnauthorizedAccess”

感谢

3 个答案:

答案 0 :(得分:1)

感谢Michael,我意识到问题出在文档中。目前还不清楚注册是叶子的registarationid而不是父证书的注册

“将注册ID替换为上一节中提到的注册ID。”应替换为 “将注册ID替换为先前生成的叶子的注册ID”

答案 1 :(得分:0)

我已使用最新版SDK测试过。有用。以下是我的操作步骤。

<强>更新

  1. 使用命令生成根ca证书文件(testRootCert_cert.pem,testRootCert_fullchain.pem,testRootCert_key.pem将在工具文件夹中生成):
  2.   

    节点create_test_cert.js root

    1. 添加名为&#34; root&#34;的证书在证书中,并上传根ca文件(testRootCert_cert.pem)。

    2. 生成验证码并使用此命令创建验证ca文件,上传verify_cert.pem文件,状态&#34; root&#34;将被&#34;验证&#34;:

    3.   

      节点create_test_cert.js验证--ca testRootCert_cert.pem --key testRootCert_key.pem --nonce {验证码}

      1. 在此guide之后创建一个注册组,一个名为&#34的注册组;第一个&#34;将被创建:
      2.   

        节点create_enrollment_group.js&#34;&#34; &#34; testRootCert_cert.pem&#34;

        1. 通过以下命令为设备生成证书文件以注册到该组。
        2.   

          节点create_test_cert.js设备device01 testRootCert

          1. device01 _cert.pem device01 _fullchain.pem device01 _key.pem 复制到&#39; \ device \ samples& #39;文件夹,并修改provisioning hostid scoperegistration id(此处为&#39;首先命名),cert filenamekey filename。请参阅此document
          2.   

            var provisioningHost =&#39; {您的配置主机}&#39 ;;   var idScope =&#39; {your id scope}&#39 ;;   var registrationId =&#39; device01&#39 ;;   var deviceCert = {    cert:fs.readFileSync(&#39; device01_cert.pem&#39;)。toString(),    key:fs.readFileSync(&#39; device01_key.pem&#39;)。toString()   };

            1. 最后,运行node register_x509.js分配设备。该消息将显示为:
            2. registration succeeded
              assigned hub={iothub host}
              deviceId=device01
              

              enter image description here

              请节点设备配置服务应链接到您的IoT中心。enter image description here

答案 2 :(得分:0)

<。> .net的配置服务示例也不起作用,链接为enter link description here。总是得到一个system.argument错误,值不能为空。然后我发现问题是Environment.GetEnvironmentVariable(key)返回null。我该怎么处理这个错误?