Ошибка подключения модуля к пограничному концентратору с помощью узла sdk- NotConnectedError: невозможно получить сертификат локального эмитента - PullRequest
0 голосов
/ 24 апреля 2018

Клиент узла Edge Module не может подключиться к Edge Hub через MQTT.Выдает ошибку сертификата - NotConnectedError: unable to get local issuer certificate.

Для клиента установлена ​​опция Cert,

var certFile = process.env.EdgeModuleCACertificateFile;
var connectionString = process.env.EdgeHubConnectionString
var Protocol = require('azure-iot-device-mqtt').Mqtt;
var Client = require('azure-iot-device').Client;
var client = Client.fromConnectionString(connectionString, Protocol);

var options = {
    ca: fs.readFileSync(certFile,'utf-8').toString(),
};
client.setOptions(options,()=>{
    console.log('Client transport option set');
});
client.open(connectCallback);

1 Ответ

0 голосов
/ 24 апреля 2018

Я не могу помочь, не зная некоторых подробностей о вашем окружении:
Вы работаете в докере?
Какое базовое изображение вы использовали?
Как вы запускаете контейнер - вы запускаете его вручную или позволяете EdgeAgent запускать его для вас?

Несколько вещей, которые вы можете попробовать:

1) Убедитесь, что вы используете код @ modules-preview. NPM позволяет легко ошибиться.

PS F:\temp> npm list | findstr "azure-iot"
+-- azure-iot-device-mqtt@1.4.0-modules-preview
| +-- azure-iot-common@1.5.0-modules-preview
| +-- azure-iot-device@1.4.0-modules-preview
| | +-- azure-iot-http-base@1.3.3-modules-preview
| +-- azure-iot-mqtt-base@1.3.3-modules-preview

2) Убедитесь, что строка подключения правильно сформирована. Он должен иметь значения moduleId = и gatewayHostName =. GatewayHostName должно ссылаться на ваш хост edgeHub.

3) Убедитесь, что файл сертификата, указанный в EdgeModuleCACertificateFile, существует и выглядит как действительный файл PEM (например, текстовый файл, обернутый в ----- BEGIN CERTIFICATE ----- / ----- END CERTIFICATE ---- с кучей строк закодированного текста между ними).

...