Node.js HTTPS-400-Fehler - 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'

Schreibe ich eine Node.js app, hat auf Anfrage einiger Daten aus unseren internen APIs. Der schwierige Teil ist, dass die server, die ich bin anfordern von Daten aus hat bestimmte Einschränkungen:

  • Der Antrag ist auf dem Protokoll HTTPS (nicht HTTP)
  • Der Antrag muss unter Verwendung einer der LAN-IP-Adresse, da der domain-name funktioniert nicht intern
  • Der Anfrage auftauchen muss, um sein Interesse von der externen domain-Namen, weil das ist, was die Virtual-Host-setup ist für.

Um dies zu tun, ich bin mit einem bit-code, der wie folgt aussieht:

var headers = {
    Host: externalHostname,
    Hostname: externalHostname,
};

var options = {
    host: InternalIP,
    path: path,
    method: 'GET',
    headers: headers
};

var req = https.request(options, function(res) {
    res.setEncoding('utf8');

    var data = "";

    res.on('data', function(chunk) {
        data += chunk;
    });

    res.on('end', function() {
        //Do something with that data
    });

    res.on('error', function(err) {
            console.log("Error during HTTP request");
            console.log(err);
    });
});

req.end();

Leider, ich bin immer 400 (Ihr browser schickte eine Anfrage, dass dieser server nicht verstehen konnte) Fehler als Antwort. Ich habe doppelt und dreifach geprüft, dass der hostname, ip-Adresse und Pfad-Namen sind alle richtig (ich kann den test in meinem browser, und alles ist gut).

Habe ich eine Ausgabe der Variablen response (res), und erhalte eine authorizationError Wert von UNABLE_TO_VERIFY_LEAF_SIGNATURE. Ich bin mir nicht sicher, was das ist, oder ob es mein problem, aber es ist die einzige nützliche information, die ich finden konnte.

Ich habe eine vollständige Ausgabe der response-variable hier.

Irgendwelche Ideen auf, was könnte die Ursache sein?

Update: habe ich es herausgefunden! Ich habe versucht, mit dem server authentifizieren, indem eine ?PHPSESSID=asdad GET variable, aber Sie haben diese deaktiviert. Ich war in der Lage, damit es funktioniert, indem die Einstellung PHPSESSID im Cookie-header.

  • haben Sie eine Zeile wie diese irgendwo oben, dass var https = require('https'); ?
  • Yup. https ist eine Globale variable, und ich weiß, dass es funktioniert, da die eigentliche HTTPS-Anforderung feuert - es wird nur reagiert mit einem 400-Fehler.
  • Ihr fehlen auch method:['get','post'] in die Optionen...heres die docs nodejs.org/docs/v0.4.0/api/https.html#https.request
  • gerade Hinzugefügt haben - kein Glück.
  • Im Blick in die authorizationError: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' Fehler jetzt...ist Ihre SSL-cert. self-signed?
  • NÖ - cert "verified by GoDaddy", nach Chrome.
  • Ist der server erwartet der client ein Zertifikat? Welche Informationen können Sie finden in den server-error-logs?
  • Leider, ich habe keinen Zugriff auf die logs noch. Derzeit arbeite ich auf zu Ihnen, aber mein Chef(es) nicht reagieren.
  • mögliche Duplikate von Nicht überprüfen leaf signature

InformationsquelleAutor jwegner | 2012-02-25
Schreibe einen Kommentar