2016-05-05 7 views
1

Ich versuche, die Service-Anrufe, die von meinem Knoten zu anderen Diensten sicher sind, zu sichern. Alle anderen Dienste haben https aktiviert. Ich habe versucht, die folgenden MethodenSecuring Service Anrufe von Knoten mit SSL

  1. process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'

, die als pro meinem Verständnis alle Fehler ignoriert, so aus dem Code entfernt becuase von Zertifikaten

  1. Ich bin mit request Modul. wo wir

    key konfigurieren können - vorausgesetzt, meine private Schlüsseldatei,

    cert - sofern meine Zertifikatsdatei

    ca - Zertifikat authorty Kette

    dann wurde es UNABLE_TO_VERIFY_LEAF_SIGNATURE

werfen

Ich fand heraus, dass Knoten nicht ca aus dem Sy liest Stengel. es hat seine eigene Ca-Kette So habe ich node-ssl-root-cas , die neueste cas aus dem Internet abgerufen.

Dann ssl-Analysator verwendet wird, konnte ich meine Domain finden nicht über Zwischen CA-Zertifikat

mir, dass aus unserem ca heruntergeladen und ca Kette hergestellt und befestigt es an ssl-root-cas

i Dann war in der Lage, Anfragen erfolgreich zu machen

Aber auch wenn ich Schlüssel und Cert aus meiner Anfrage entfernen kann ich Anfrage machen und das Ergebnis erhalten.

Wie kann ich überprüfen, dass meine Anfrage und Antwort tatsächlich verschlüsselt sind?

Oder Knoten nur ignorieren Fehler,

Antwort

2

FYI, Knoten wird das Zertifikat auhtorities auf dem System installiert, wenn Sie Ihre eigene liefern nicht mit der „CA“ Eigenschaft. Wenn Sie Ihre eigenen angeben, werden die Systemeinträge ignoriert. Dies ist beabsichtigt, da die Bereitstellung Ihrer eigenen CA wahrscheinlich bedeutet, dass Sie nur die von Ihrer eigenen Zertifizierungsstelle signierten Trust-Zertifikate nur möchten. Wenn Sie keine eigene Zertifizierungsstelle verwenden, können Sie das Festlegen der Eigenschaft "ca" überspringen. Wenn dies der Fall ist, bin ich nicht sicher, warum Sie auch die vollständige Liste der allgemein vertrauenswürdigen Zertifizierungsstellen angeben müssen. Das scheint ein ziemlich merkwürdiger Anwendungsfall zu sein.

Sie können das https-Modul verwenden, um Anfragen zu stellen, ohne einen eigenen Schlüssel und ein eigenes Zertifikat anzugeben. Dies ist erwartetes und dokumentiertes Verhalten. Aus technischen Gründen muss der Client beim Ausführen von HTTPS-Anfragen, insbesondere beim Öffnen eines TLS-Sockets, einen privaten Schlüssel und ein Zertifikat besitzen. Im Standardfall überprüft der Server den Client in keiner Weise, daher verwenden Browser ein sogenanntes "Snailoil" -Zertifikat - ein gebündeltes selbstsigniertes Zertifikat.

Der Anwendungsfall für die Bereitstellung Ihres eigenen Schlüssels und Zertifikats bei der Ausführung von https-Anforderungen ist, wenn der Client die Clientzertifikatprüfung aktiviert hat.Wenn Sie beispielsweise eine Verbindung zu Apple-Servern herstellen, um Push-Nachrichten an iOS zu senden, verfügen Sie über ein von Apple ausgestelltes Client-Zertifikat, um zu überprüfen, ob Sie Push-Nachrichten senden können (das Zertifikat wurde von Apple ausgestellt) und welche App Sie sind Senden an (der Fingerabdruck/Prüfsumme des Zertifikats).

Wenn die HTTPS-Dienste, mit denen Sie sprechen, bestimmte Client-Zertifikate erfordern, sollten Sie "key" und "cert" nicht setzen - es gibt keinen Grund, dies zu tun.

Also, zusammenfassend können Sie wahrscheinlich die Einstellung aller drei Schlüssel, Cert und CA überspringen, da das eigentliche Problem Ihr falsch konfigurierter Server zu sein scheint (er hat die CA-Kette nicht bedient).

+0

Danke für die Antwort. Nach Ihrem Vorschlag fand ich heraus, dass das Zertifikat fehlte ca-Kette. Mit der CA-Kette bin ich nun in der Lage zu zerkleinern – Sreevisakh

Verwandte Themen