Azure 配置服务示例不适用于节点
Azure Provisioning service example not working for node
我按照 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”
谢谢
我用最新版本的SDK测试过。有用。以下是我的操作步骤。
更新:
- 使用命令生成根ca证书文件(testRootCert_cert.pem、testRootCert_fullchain.pem、testRootCert_key.pem将在tools文件夹中生成):
node create_test_cert.js root
在Certificates中添加名为"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'文件夹,并修改
provisioning host
,id scope
,registration id
(此处为'first'命名),cert filename
和 key filename
。请参考这个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
请注意设备预配服务应链接到您的 IoT 中心。
感谢迈克尔,我意识到问题出在文档中。不清楚registrationid是叶子的registarationid而不是父证书的registrationid
"Replace registration id with the Registration Id noted in the previous section. " 应替换为
"Replace registration id with the Registration Id of the leaf previously generated"
.net 的配置服务示例也不起作用,link 因为它enter link description here。总是出现 system.argument 错误,值不能为空。然后我发现问题是 Environment.GetEnvironmentVariable(key) return null。我该如何处理这个错误?
我按照 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”
谢谢
我用最新版本的SDK测试过。有用。以下是我的操作步骤。
更新:
- 使用命令生成根ca证书文件(testRootCert_cert.pem、testRootCert_fullchain.pem、testRootCert_key.pem将在tools文件夹中生成):
node create_test_cert.js root
在Certificates中添加名为"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'文件夹,并修改
provisioning host
,id scope
,registration id
(此处为'first'命名),cert filename
和key filename
。请参考这个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
请注意设备预配服务应链接到您的 IoT 中心。
感谢迈克尔,我意识到问题出在文档中。不清楚registrationid是叶子的registarationid而不是父证书的registrationid
"Replace registration id with the Registration Id noted in the previous section. " 应替换为 "Replace registration id with the Registration Id of the leaf previously generated"
.net 的配置服务示例也不起作用,link 因为它enter link description here。总是出现 system.argument 错误,值不能为空。然后我发现问题是 Environment.GetEnvironmentVariable(key) return null。我该如何处理这个错误?