Request: Verbindung zum https-Endpunkt herstellen und Folgendes abrufen: Hostname/IP stimmt nicht mit den Altnamen des Zertifikats überein

Erstellt am 18. Sept. 2015  ·  12Kommentare  ·  Quelle: request/request

Ich versuche, von meinem localhost mit dem folgenden Code eine Verbindung zu einem externen https-REST-Dienst auf heroku herzustellen:

request(
            {
                url: config.get('host') +req.originalUrl,
                method: req.method,
            }, function (error, response, body) {

            })

Beim Rückruf bekomme ich folgende Fehlermeldung:

Hostname/IP stimmt nicht mit den Altnamen des Zertifikats überein: "Host: localhost. is not in the cert's altnames: DNS:_.herokuapp.com, DNS:herokuapp.com "
Host: localhost. ist nicht in den Altnamen des Zertifikats enthalten: DNS:_.herokuapp.com, DNS:herokuapp.com

Wenn ich mich mit demselben lokal installierten Dienst verbinde, funktioniert alles ordnungsgemäß, es sollte also mit https zusammenhängen.

Irgendeine Hilfe?

Hilfreichster Kommentar

Das Zeug ist schrecklich

Alle 12 Kommentare

Wie lautet die genaue URL Ihrer Anfrage config.get('host') +req.originalUrl ?

Das bekomme ich auch hin. Ich verwende ein selbstsigniertes Zertifikat und möchte keine Überprüfung des Hostnamens durchführen. Das habe ich in meinen Anfragen

agentOptions: {
        ca: fs.readFileSync('ca.cert.pem')
    }

Wie legen Sie ignoreHostname fest?

Haben Sie versucht, die Variable "rejectUnauthorized" auf "false" zu setzen?

`````` Anfrage({
URL: config.get('host') +req.originalUrl,
Methode: Erforderliche Methode,
ablehnenUnberechtigt: false
},
Funktion (Fehler, Antwort, Hauptteil) {

        })```

``````

Es wäre schön, wenn rejectUnauthorized: false irgendwo auf der Titelseite wäre.

Zwingt Sie rejectUnauthorized: false nicht, jedes Serverzertifikat zu akzeptieren? Wenn das der Fall ist, halte ich es für keine gültige Lösung.
Ich möchte den Server verifizieren, indem ich sicherstelle, dass das Zertifikat von einer vertrauenswürdigen CA signiert ist (in meinem Fall ist es meine eigene CA). Ich will das Ganze nicht zum Schweigen bringen und verunsichern.

Das Zeug ist schrecklich

Sie müssen CommonName Serverzertifizierung mit hostname .

Sie müssen den CommonName der Serverzertifizierung mit dem Hostnamen des Clients abgleichen.

Warum ist das so? Warum kümmert sich der Client um seinen eigenen Hostnamen, der im Serverzertifikat vorhanden ist? Hier geht es um die Authentifizierung des Servers. Vielen Dank

Zu Ihrer Information Ich habe diesen Fehler beim Weiterleiten von Anfragen erhalten. Ich habe request({host: 'something.com'... headers: req.headers... Was mir zuerst nicht klar war, war, dass in den Headern host: 'localhost' , was der Schuldige war. Ich habe es ersetzt und jetzt ist es OK.

Ich glaube, ich stoße auf das gleiche Problem. Ich erhalte die folgende Fehlermeldung, wenn ich Knoten 6.10.3 verwende und 2.88 anfordere:

Fehler: Hostname/IP stimmt nicht mit den Altnamen des Zertifikats überein: "Host: https. ist nicht in den Altnamen des Zertifikats enthalten:

Ich habe dies bis zum Code des Knotens tls.js verfolgt. Irgendwie "https." wird als Hostname per Request an den Knoten übergeben. Wenn ich RejectUnauthorized auf false setze, funktioniert mein Code. Also gebe ich den richtigen Hostnamen in der URL ein.

Ich glaube, dass dies durch die Verwendung des von der Zieldomäne bereitgestellten API-Schlüssels abgeschwächt werden kann.

Zu Ihrer Information Ich habe diesen Fehler beim Weiterleiten von Anfragen erhalten. Ich habe request({host: 'something.com'... headers: req.headers... Was mir zuerst nicht klar war, war, dass in den Headern host: 'localhost' , was der Schuldige war. Ich habe es ersetzt und jetzt ist es OK.

mein Problem gelöst. Ich habe vergessen, req.header zu ändern und Host zu ändern.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen