Request: Fehler: selbstsigniertes Zertifikat in der Zertifikatskette

Erstellt am 5. Feb. 2016  ·  14Kommentare  ·  Quelle: request/request

Ich versuche, meine Anfragen gegen einen Server zu analysieren, der Charles Proxy verwendet. Der Server verwendet TSL, sodass ich das klassische gefälschte Zertifikat habe, um den klaren Datenverkehr anzeigen zu können.

NodeJS / Request mag es nicht, daher wird mein Skript nicht ausgeführt und wirft diesen Fehler aus.

Wie kann ich das umgehen?

                console.log('Response status: ' + response.statusCode);
                                                          ^
TypeError: Cannot read property 'statusCode' of undefined
    at Request._callback (/xxx:88:59)
    at self.callback (/xxx:199:22)
    at Request.emit (events.js:107:17)
    at Request.onRequestError (/xxx:821:8)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:271:9)
    at TLSSocket.emit (events.js:107:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:942:18)
    at TLSSocket.emit (events.js:104:17)
    at TLSSocket._finishInit (_tls_wrap.js:460:8)
Error: Error: self signed certificate in certificate chain
Help (please use Stackoverflow)

Hilfreichster Kommentar

Danke für die Erklärung. Ich habe herausgefunden, wie man Probleme mit gefälschten Zertifikaten vermeidet, falls es jemanden interessiert:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Damit kann ich eine gefälschte SSL-Authentifizierung verwenden, um die Kommunikation zwischen meinem Client und einem Server zu überprüfen.

Alle 14 Kommentare

in diesem Fall ist response undefiniert.
Antwort muss nicht definiert werden.
Antwort wird nur definiert, wenn eine tatsächliche Antwort eingegangen ist.
wenn ein Verbindungsfehler aufgetreten ist, ist dies nicht der Fall.

Überprüfen Sie, ob error definiert ist oder response.statusCode größer oder gleich 400 ist.

Wenn Sie dies debuggen möchten, verwenden Sie

env NODE_DEBUG="*" node asdf.js

Danke für die Erklärung. Ich habe herausgefunden, wie man Probleme mit gefälschten Zertifikaten vermeidet, falls es jemanden interessiert:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Damit kann ich eine gefälschte SSL-Authentifizierung verwenden, um die Kommunikation zwischen meinem Client und einem Server zu überprüfen.

Mein Fehler war ähnlich, aber jetzt geht es mir gut, danke @nmaxcom

Fehler: Das erste Zertifikat kann nicht überprüft werden
bei Fehler (nativ)
bei TLSSocket.(_tls_wrap.js:929:36)
bei TLSSocket.emit (events.js:104:17)
bei TLSSocket._finishInit (_tls_wrap.js:460:8)

oder Sie können einfach let's encrypt verwenden, Zertifikate, die von einer legitimen Zertifizierungsstelle signiert wurden.
Selbstsignierte Zertifikate machen jetzt keinen Sinn.

request.get({ uri: 'https://mydocker.com/v2/_catalog', rejectUnauthorized: false }

Für selbstsignierte Zertifizierungsstellen können wir „rejectUnauthorized = false“ angeben.
Überprüfen Sie request.js in Zeile 623 & _tls_wrap.js in node.js.

Bessere Alternativen sind:
a) Führen Sie eine SSL-Terminierung an Ihrem Load Balancer durch
b) Verwenden Sie ein kostenloses Zertifikat

Auf diese Weise haben Sie eine einzige Konfiguration für alle Ihre Umgebungen.
Sie haben ein höheres Vertrauen in Ihre Bereitstellungen und filtern Fehler früher.

ablehnenUnerlaubte Werke in options.rejectUnauthorized = false
aber nicht in options.agentOptions.rejectUnauthorized = false

weiß nicht warum

https://github.com/request/request/blob/v2.81.1/request.js#L257 -L259

Entschuldigung, sehe nur den Code. Ich verstehe, dass strictSSL nur ein Alias ​​für rejectUnauthorized
Ich muss sagen, das ist ein schlechter Name, benutze einfach rejectUnauthorized 😭

diesen Fehler beim Ausführen von Code erhalten
Parse-Fehler: Syntaxfehler, unerwartete 'var' (T_VAR), erwartetes Ende der Datei in C:xamphtdocsPHPIMAPadminindex.php in Zeile 146

var notifier = require('mail-notifier');
var imap = {
Benutzername: "anandlintas2017",
Passwort: "xxxxxxxxx",
host: "imap.gmail.com",
port: 993, // imap port
secure: true // sichere Verbindung verwenden
};

notifier(imap).on('mail',function(mail){console.log(mail);}).start();
?>

Für Leute, die vorschlagen, restoreUnauthorized=false zu setzen, was ist, wenn ich interne Server habe, die verschlüsselte Verbindungen miteinander mit einigen selbstsignierten Zertifikaten haben sollten, iguess Setzen von restoreUnauthorized auf false wird den Fehler stoppen, aber meine Verbindungen sind 100% anfällig für MITM-Angriffe, ich Sehen Sie, dass dies ein Fehler in der nodejs tls-Bibliothek ist, an dem sie leidet, und ich kann nirgendwo eine Lösung finden (ich habe Google zu Seite 5 der Google-Ergebnisse, die wirklich tief ist) Ich weiß nicht, wie andere Leute das nicht tun rede darüber, fehlt mir hier etwas! !!!!! bitte korrigiert mich wenn ich falsch liege!!

rejectUnauthorized works in options.rejectUnauthorized = false
but not in options.agentOptions.rejectUnauthorized = false

Bei mir geht beides nicht

request.get({ uri: 'https://s3.amazonaws.com/...',
    rejectUnauthorized: false,
    // strictSSL: false,
    proxy: '127.0.0.1:8080',
    agentOptions: {
        rejectUnauthorized: false,
        // strictSSL: false,
    },
}, (...args) => {
    console.log(args);
    process.exit();
});

PS Ausführen des Codes innerhalb von ELECTRON mit aktiviertem SSL-Deaktivierungsflag.

Für mich hat das Deaktivieren von Kaspersky Antivirus das Problem gelöst.

https://github.com/request/request/issues/2061#issuecomment -182573171 scheint die Antwort auf die allgemeine Frage zu sein

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Gibt keine Wirkung.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen