Попытка подключить приложение node.js к AWS IoT, но появляется ошибка «невозможно получить сертификат локального эмитента» - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь подключиться к AWS IoT из приложения node.js, используя aws-iot-device-sdk. Я хочу публиковать сообщения в брокере AWS MQTT. Тем не менее, я получаю сообщение об ошибке «невозможно получить сертификат локального эмитента»

events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: unable to get local issuer certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
    at TLSSocket.emit (events.js:189:13)
    at TLSSocket.EventEmitter.emit (domain.js:441:20)
    at TLSSocket._finishInit (_tls_wrap.js:633:8)
Emitted 'error' event at:
    at MqttClient.<anonymous> (/Users/****/node_modules/aws-iot-device-sdk/device/index.js:808:12)
    at MqttClient.emit (events.js:189:13)
    at MqttClient.EventEmitter.emit (domain.js:441:20)
    at TLSSocket.handleTLSerrors (****/node_modules/aws-iot-device-sdk/device/lib/tls.js:29:18)
    at TLSSocket.emit (events.js:194:15)
    at TLSSocket.EventEmitter.emit (domain.js:441:20)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

Я создал свое устройство (реального имитатора не существует), зарегистрировал его в AWS IoT, создал сертификат, закрытый и открытый ключи, добавил политику к сертификату.

Я также скачал Amazon Root CA 1 с https://www.amazontrust.com/repository/AmazonRootCA1.pem.

Теперь возникает мой вопрос (извините, если это глупо): Как, в каком формате я могу сохранить сертификат? Я просто скопировал текст в файл и вызвал файл root_ca.pem.

Я также пробовал разные форматы ключей и сертификатов (xxx.key.pem или root_ca.crt).

const topic = 'uniqueClientId/#/1/' + anotherUniqueId + '/myTopicName';
AWS.config.region = 'us-east-1';

let device = awsIot.device({
    keyPath: './Certs/****-private.key',
    certPath: './Certs/****-certificate.pem',
    caPath: './Certs/root_ca.pem',
    clientId: 'myUniqueClientId',
    host: 'myhost.iot.us-east-1.amazonaws.com' // NOTE: got this value with `aws iot describe-endpoint`
});

device
    .on('connect', function() {
        console.log('connect');
        device.publish(topic, JSON.stringify({ test_data: 1}));
    });

Я хотел бы видеть тестовое сообщение в брокере MQTT на консоли Amazon.

Но мне не удается подключиться к AWS IoT.

Пожалуйста, потерпите меня, если чего-то не хватает. Я довольно новичок, и вот мой первый пост на StackOverflow. Поэтому я благодарен, если кто-нибудь из вас может помочь мне здесь или указать мне направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...