【问题标题】:Azure Provisioning service example not working for nodeAzure 预配服务示例不适用于节点
【发布时间】:2018-04-23 12:59:01
【问题描述】:

我按照 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 is IotHubUnauthorizedAccess”

谢谢

【问题讨论】:

  • 什么是“DPS?”定义首字母缩略词很有帮助。此外,目前还不清楚您指的是哪个教程,并且在没有围绕这个问题的太多上下文的情况下,也不清楚您正在尝试做什么,或者预期的结果是什么(除了涉及 Azure IoT)。请相应地编辑您的问题。
  • 嗨,Michael,我目前在 azure-iot-sdk-node 的主分支上,是的,我已将 iotHub 链接到 DPS。你知道我是否可以在 AZure 门户中找到一些解释问题的日志。我不知道问题是链接到我的证书还是其他原因。

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


【解决方案1】:

我已经使用最新版本的 SDK 进行了测试。有用。以下是我的操作步骤。

更新:

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

节点 create_test_cert.js 根

  1. Certificates中添加一个名为“root”的证书,并上传root ca文件(testRootCert_cert.pem)。

  2. 使用此命令生成验证码并创建验证ca文件,上传verification_cert.pem文件,“root”状态为“Verified”:

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

  1. guide之后创建注册组,将创建一个名为“first”的注册组:

节点 create_enrollment_group.js "" "testRootCert_cert.pem"

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

node create_test_cert.js 设备 device01 testRootCert

  1. device01 _cert.pemdevice01 _fullchain.pemdevice01 _key.pem 复制到 '\device\samples' 文件夹,并修改provisioning hostid scoperegistration id(此处为'first'命名)、cert filenamekey filename。请参考这个document

var provisioningHost = '{您的配置主机}'; var idScope = '{你的 id 范围}'; var registrationId = 'device01'; var deviceCert = { 证书:fs.readFileSync('device01_cert.pem').toString(), 键:fs.readFileSync('device01_key.pem').toString() };

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

请注明设备预配服务应链接到您的 IoT 中心。

【讨论】:

  • 嗨,Mickael,您描述的程序也适用于我个人注册,我的问题是当我尝试在注册组中配置设备时
  • 我目前在 azure-iot-sdk-node 的主分支上,是的,我已将我的 iotHub 链接到 DPS。你知道我是否可以在 AZure 门户中找到一些解释问题的日志。我不知道问题是链接到我的证书还是其他原因
  • @stef,您可以在 DPS 中设置诊断设置以监控和诊断日志,以确保一切正常。
  • @stef,当我尝试在注册组中配置设备时它也有效。我已更新回复。
  • 感谢 Mickael,我昨天激活了诊断日志,但我在 Azure 上找不到它们你知道我在哪里可以找到它们吗?昨天您尝试了个人注册,但您是否尝试对组注册做同样的事情,这是失败的情况,我在 Azure 文档上找不到示例。
【解决方案2】:

感谢 Michael,我意识到问题出在文档中。不清楚registrationid是叶子的registrationid而不是父证书的registrationid

“将注册ID替换为上一节中记录的注册ID。”应替换为 "将注册ID替换为之前生成的叶子的注册ID"

【讨论】:

  • 您可以在文档底部给出关于文档的反馈。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2019-12-25
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多