it-swarm.com.ru

nodejs - ошибка самозаверяющего сертификата в цепочке сертификатов

У меня проблема с запросами https на стороне клиента.

Фрагмент может выглядеть так:

var fs = require('fs');
var https = require('https');

var options = {
    hostname: 'someHostName.com',
    port: 443,
    path: '/path',
    method: 'GET',
    key: fs.readFileSync('key.key'),
    cert: fs.readFileSync('certificate.crt')
}

var requestGet = https.request(options, function(res){
    console.log('resObj', res);
}

Я получаю сообщение об ошибке: самоподписанный сертификат в цепочке сертификатов.

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

4
kDoyle

Вам необходимо добавить NODE_TLS_REJECT_UNAUTHORIZED='0' в качестве переменной среды. 

12
Peter Grainger

Вы можете написать команду npm config set strict-ssl = false

4
Arsalan Ahmed Khan

Отключить проверку довольно опасно. Гораздо лучше проверить сертификат.

Вы можете вставить сертификат центра сертификации в запрос с помощью ключа ca объекта параметров, например:

let opts = {
    method: 'GET',
    hostname: "localhost",
    port: listener.address().port,
    path: '/',
    ca: await fs.promises.readFile("cacert.pem")
  };

https.request(opts, (response) => { }).end();

Я собрал целую демонстрацию этого, чтобы вы могли видеть, как создавать тесты SSL.

Это здесь .

1
nic ferrier