web-dev-qa-db-fra.com

nodejs - certificat auto-signé d'erreur dans la chaîne de certificats

Je suis confronté à un problème de demandes https côté client.

Un extrait peut ressembler à ceci:

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);
}

Ce que je reçois est une erreur: certificat auto-signé dans la chaîne de certificats.

Lorsque j'utilise Postman, je peux importer le certificat client et la clé et l'utiliser sans aucun problème. Y a-t-il une solution disponible ?? J'aimerais aussi avoir des éclaircissements sur la manière dont postman traite les certificats et fonctionne. 

4
kDoyle

Vous devez ajouter NODE_TLS_REJECT_UNAUTHORIZED='0' en tant que variable d'environnement. 

12
Peter Grainger

Vous pouvez écrire la commande npm config set strict-ssl = false

4
Arsalan Ahmed Khan

Désactiver la vérification est une chose assez dangereuse à faire. Mieux vaut vérifier le certificat.

Vous pouvez extraire le certificat de l'autorité de certification dans la demande avec la clé ca de l'objet options, comme ceci:

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

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

Je mets en place une démo complète pour que vous puissiez voir comment construire des tests SSL.

C'est ici .

1
nic ferrier