Использование Node.JS и Unirest для клиента REST через HTTPS, выдача сертификата

Я пытаюсь создать свой первый REST-клиент в Node.JS, используя Unirest. Он предназначен для связи с сервером Flask RestPlus, который проксируется через Nginx через порт 443. Я могу получить доступ к документации Swagger в Chrome без проблем с SSL. Сертификат SSL не является самоподписанным, он выдается через Digicert и является внутренним, где я работаю. Когда я пытаюсь получить запросы с помощью Unirest, я получаю unable to get local issuer certificate, Я могу добавить функцию strictSSL (false) к своему вызову API, и ошибка исчезнет, ​​но я бы предпочел не отключать проверку SSL. Я искал ответ по всему Google, но не смог ничего найти. Любая помощь будет оценена. Я запускаю Node.JS в среде Windows 10 для разработки и тестирования, но после завершения код будет развернут в среде Cloud Foundry/Linux.

Код Node.JS:unirest.get("https://path/to/api/call").headers(headers).end(function (res) { console.log(res); });

Ошибка, которая дается:

{error: {Error: невозможно получить сертификат локального эмитента в Error (native) в TLSSocket. (_tls_wrap.js:1062:38) в emitNone (events.js:86:13) в TLSSocket.emit (events.js:185:7) в TLSSocket._finishInit (_tls_wrap.js:586:8) в TLSWrap.ssl.onhandshakedone (_tls_wrap.js:416:38) code: >'UNABLE_TO_GET_ISSUER_CERT_LOCALLY' } }

1 ответ

Я смог найти решение этой проблемы! С использованием ssl-root-cas и добавив следующий код в начало моего файла rest-client, проблема была решена.

var rootCas = require('ssl-root-cas/latest').create();
rootCas.addFile(__dirname + '/path/to/ca.pem');
require('https').globalAgent.options.ca = rootCas;

Надеюсь, кто-то найдет это полезным, если столкнется с той же проблемой.

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