2017-12-16 14 views
0

Ich spiele mit einem Schwarm von "Knoten", die miteinander verbunden sind, und alles, was mich wirklich interessiert, ist, dass sie sicher miteinander verbunden sind und alle authentifiziert sind.Node.js TLS-Verbindungen ohne Überprüfung des Hostnamens

Dafür dachte ich, das TLS-Modul würde eine gute Passform sein. Ich habe eine Zertifizierungsstelle erstellt und eine Reihe von Zertifikaten signiert, eine für jeden Knoten. Ich habe dann das Problem, dass Zertifikate jetzt gegen den Host validiert werden, von dem der Knoten verbindet.

Kann die Common Name-Validierung irgendwie deaktiviert oder umgangen werden?

Gibt es etwas grundlegend Fehlerhaftes an diesem Setup?

Stimmt es, dass, solange diese Zertifikate von meiner Zertifizierungsstelle signiert sind, die Verbindung sicher sein sollte und ich sicher bin, dass nur meine Knoten eine Verbindung herstellen können?

Es scheint nur ein Ärgernis zu sein, Zertifikate signieren zu müssen, die an einen Hostnamen oder eine IP-Adresse (oder mehrere bei mehreren Schnittstellen) gebunden sind. Ich habe gelernt, dass die Anforderung, den Host zu validieren, eigentlich kein Teil von TLS, sondern HTTPS ist - in diesem Licht könnte es standardmäßig ein Node.js-Fehler sein?

Antwort

0

Kann die Common Name-Validierung irgendwie deaktiviert oder umgangen werden?

Dies ist möglich, indem die checkServerIdentity Möglichkeit tls.connect auf eine no-op-Funktion einstellen:

const tls = require('tls') 
tls.connect({ 
    checkServerIdentity:() => undefined, 
    ... 
}) 

Quellen:

Verwandte Themen