X509_check_private_key: ошибка несоответствия значений ключей: DPS, IOT hub

Я не могу создавать устройства на концентраторе IOT в node.js. Я заменил хост инициализации на глобальную конечную точку устройства, idScope на ID Scope моего DPS. Я использую групповую регистрацию с сертификатами x.509, поэтому я использую имя субъекта сертификата в качестве значения registrationId. Я также связал свой центр Интернета вещей со службой подготовки устройств.

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> node. \
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:\TestNuilder) \azure-iot-sdk-node-master\provisioning\device\samples\node_modules\mqtt\lib\connect\tls.js:17:20) в MqttClient.wrapper [as 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' }

Я перехожу по ссылкам ниже

Создание тестовых сертификатов: Управление тестовыми сертификатами ЦС для образцов и руководств

create-simulated-device-x509-nodeJS# Имитировать устройство

IoT Hub Device Provisioning Service Основные понятия устройства # Регистрационный идентификатор

Примеры пакета SDK для устройства подготовки устройств Azure IoT для Node.js

РЕДАКТИРОВАТЬ. Я хочу использовать групповую регистрацию.

1 ответ

Из приведенного выше кода похоже, что вы используете "Azure IoT CA TestOnly Root CA" в качестве registrationId? RegistrationId должен быть cn/subject самого сертификата устройства (независимо от того, что вы передали в './certGen.sh create_device_certificate' команда), а не корневого сертификата ЦС. Что за сертификат "IOTProj_cert.pem"? Это сертификат устройства? или сертификат корневого ЦС?

Другие вопросы по тегам