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.
Vous devez ajouter NODE_TLS_REJECT_UNAUTHORIZED='0'
en tant que variable d'environnement.
Vous pouvez écrire la commande npm config set strict-ssl = false
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 .