问题描述
我无法在node.js中的IOT集线器上创建设备。我已经用全局设备端点IDScope用我的DPS的ID范围替换了配置主机。我正在使用具有x.509证书的组注册,所以我使用证书的主题名称作为registrationId的值。我还将IoT中心链接到了Device Provisioning Service。
var provisioningHost = "global.azure-devices-provisioning.net";
var idScope = "6n*******3"; //Replace id scope with the ID Scope
var **registrationId** = "Azure IoT CA TestOnly Root CA";
var deviceCert = {
cert: fs.readFileSync("./IOTProj_cert.pem").toString(),key: fs.readFileSync("./IOTProj_key.pem").toString()
};
我正在执行azure-iot-sdk-node / provisioning / device / samples / register_x509.js文件,但出现以下错误:
PS D:\ TestNode \ azure-iot-sdk-node-master \ provisioning \ device \ samples>节点。\ register_x509.js
_tls_common.js:149
错误:错误:0B080074:x509证书例程:X509_check_private_key:密钥值不匹配
在Object.createSecureContext(_tls_common.js:149:17)
在Object.connect(_tls_wrap.js:1582:48)
在Object.buildBuilder(D:\ TestNode \ azure-iot-sdk-node-master \ provisioning \ device \ samples \ node_modules \ mqtt \ lib \ connect \ tls.js:17:20)
在MqttClient.wrapper [作为streamBuilder]上(D:\ TestNode \ azure-iot-sdk-node-master \ provisioning \ device \ samples \ node_modules \ mqtt \ lib \ connect \ index.js:153:36)
在MqttClient._setupStream(D:\ TestNode \ azure-iot-sdk-node-master \ provisioning \ device \ samples \ node_modules \ mqtt \ lib \ client.js:298:22)
库:“ x509证书例程”,
函数:“ X509_check_private_key”,
原因:“键值不匹配”,
代码:“ ERR_OSSL_X509_KEY_VALUES_MISMATCH”
}
我正在关注以下链接
创建测试证书: Managing test CA certificates for samples and tutorials
create-simulated-device-x509-nodeJS#Simulate the device
IoT Hub Device Provisioning Service device concepts#Registration ID
Samples for the Azure IoT Device Provisioning Device SDK for Node.js
编辑-我要使用网上论坛注册。
解决方法
从上面的代码中,您似乎正在使用““ Azure IoT CA TestOnly根CA”作为registrationId?registrationId应该是设备证书本身的cn /主题(无论您传递给'./certGen。 sh create_device_certificate'命令),而不是根证书CA。“ IOTProj_cert.pem”是哪种证书?是设备证书还是根CA证书?