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.
Sie müssen NODE_TLS_REJECT_UNAUTHORIZED='0'
als Umgebungsvariable hinzufügen.
Sie können den Befehl npm config schreiben. Setze strict-ssl = false
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 .