我按照node.js教程通过Azure DPS(设备配置服务)注册设备@https://learn.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}
创 build 备证书。
最后,我使用 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”
谢谢
最佳答案
我已经使用最新版本的SDK进行了测试。有用。以下是我的操作步骤。
更新:
- 使用以下命令生成根ca证书文件(testRootCert_cert.pem、testRootCert_fullchain.pem、testRootCert_key.pem将在tools文件夹中生成):
node create_test_cert.js root
在证书中添加名为“root”的证书,并上传根ca文件(testRootCert_cert.pem)。
使用此命令生成验证码并创建验证ca文件,上传verification_cert.pem文件,状态“root”将变为“Verified”:
node create_test_cert.js verification --ca testRootCert_cert.pem --key testRootCert_key.pem --nonce {verification code}
- 按照此 guide 创建注册组,将创建一个名为“first”的注册组:
node create_enrollment_group.js "" "testRootCert_cert.pem"
- 通过以下命令生成设备注册到组的证书文件。
node create_test_cert.js device device01 testRootCert
- 将 device01 _cert.pem、device01 _fullchain.pem 和 device01 _key.pem 复制到“\device\samples”文件夹,并修改
配置主机
、id范围
、注册id
(此处为“第一个”命名)、证书文件名
和key 文件名
。请引用这个document .
var provisioningHost = '{your provisioning Host}'; var idScope = '{your id scope}'; var registrationId = 'device01'; var deviceCert = { cert: fs.readFileSync('device01_cert.pem').toString(), key: fs.readFileSync('device01_key.pem').toString() };
- 最后,运行
node register_x509.js
来分配设备。该消息将显示为:
registration succeeded assigned hub={iothub host} deviceId=device01
关于Azure 配置服务示例不适用于节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981730/