2

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

谢谢

4

3 回答 3

1

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

更新:

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

节点 create_test_cert.js 根

  1. 在 Certificates中添加一个名为“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. 按照本指南创建注册组,将创建一个名为“first”的注册组:

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

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

节点 create_test_cert.js 设备 device01 testRootCert

  1. device01 _cert.pemdevice01 _fullchain.pemdevice01 _key.pem 复制到 '\device\samples' 文件夹中,并修改provisioning host, id scope, registration id(这里以 'first' 命名),cert filenamekey filename. 请参阅本文档

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

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

在此处输入图像描述

请指出设备预配服务应链接到您的 IoT 中心。在此处输入图像描述

于 2018-04-24T09:25:46.440 回答
1

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

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

于 2018-04-25T08:56:44.583 回答
0

.net 的配置服务示例也不起作用,在此处输入链接描述时链接。总是收到 system.argument 错误,值不能为空。然后我发现问题是 Environment.GetEnvironmentVariable(key) return null。我该如何处理这个错误?

于 2018-05-03T06:19:10.203 回答