web-dev-qa-db-de.com

nodejs - Selbstsigniertes Fehlerzertifikat in der Zertifikatkette

Ich habe ein Problem mit clientseitigen https-Anforderungen.

Ein Snippet kann so aussehen:

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

Was ich erhalte, ist Fehler: selbstsigniertes Zertifikat in der Zertifikatskette.

Wenn ich Postman verwende, kann ich das Client-Zertifikat und den Schlüssel importieren und problemlos verwenden. Gibt es eine Lösung? Ich möchte auch ein wenig darüber erfahren, wie der Postbote mit den Zertifikaten umgeht und funktioniert. 

4
kDoyle

Sie müssen NODE_TLS_REJECT_UNAUTHORIZED='0' als Umgebungsvariable hinzufügen. 

12
Peter Grainger

Sie können den Befehl npm config schreiben. Setze strict-ssl = false

4

Das Deaktivieren der Verifizierung ist ziemlich gefährlich. Viel besser das Zertifikat zu verifizieren.

Sie können das Certificate Authority-Zertifikat mit dem ca-Schlüssel des Optionsobjekts in die Anforderung ziehen:

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

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

Ich habe hier eine ganze Demo zusammengestellt, damit Sie sehen können, wie SSL-Tests erstellt werden.

Es ist hier .

1
nic ferrier