Knoten http-proxy-SSL-transparent
In meinem setup, ich habe 2 Schichten von transparenten proxies. Wenn ein client eine SSL-Anforderung, ich möchte der erste proxy-es erfüllt einfach nach vorne der Verkehr auf den anderen, ohne zu versuchen den handshake mit dem client.
Setup scheint lustig, aber es ist gerechtfertigt, in meinem Fall - die 2. proxy registriert sich selbst auf die erste (durch einige andere service) nur gelegentlich. Es erzählt die erste: "ich bin interessiert in einigen Verkehr, der sieht like___". In den meisten Fällen, den 1. proxy einfach funktioniert.
Kann ein httpProxy (in node-proxy) proxy-SSL-Anfragen? Muss ich einen httpsProxy (die dann die handshake mit dem client)?
- Sind Sie nach einem MITM-proxy (die könnten sich die verbindungen der clients konfiguriert sind, Vertrauen) oder einfach nur das äquivalent von einer normalen HTTPS-proxy, nur transparent?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man all dies, mit den vorhandenen httpsProxy, wenn Sie wollte. Es sei denn, Sie werden wollen, so verwenden Sie einen nicht-Knoten-proxy oder proxy auf einem anderen server, ich kann nicht sehen, was Sie gewinnen würde, indem er zwei.
Fügen Sie einfach die erforderliche Anmeldung/Unterschrift Logik zu den bestehenden httpsProxy.
In der Regel, ich benutze https an den proxy zu beiden Schränken Sie die Anzahl der ports öffnen und entfernen zu müssen https auf allen Knoten-Server läuft. Sie können auch hinzufügen, Basic-Auth über http-basic-Bibliothek zu.
Siehe mein Beispiel-code: https://github.com/TotallyInformation/node-proxy-https-example/blob/master/proxy.js
BEARBEITEN 2012-05-15: Hmm, nach einigem nachdenken, ich Frage mich, ob Sie sollten nicht den Blick auf etwas wie stunnel zu tun, was Sie wollen, anstatt zu Knoten?
(Als Referenz, ich habe bereits einige dieser Punkte in meine Antwort auf deine ähnliche Frage auf ServerFault.)
Wenn Sie nach einem MITM-proxy (das heißt, ein proxy, können, schauen Sie in den SSL-Inhalte, indem es seine eigenen Zertifikate, die arbeiten können, sofern die clients konfiguriert sind, Ihnen zu Vertrauen), wird es kaum völlig transparent sein, denn Sie haben zumindest zur Konfiguration der clients, um die Vertrauenswürdigkeit der Zertifikate.
Zusätzlich, es sei denn, alle Ihre Kunden verwenden, die server name indication-Erweiterung, der proxy selbst wird nicht zuverlässig bestimmt werden, welche host-Problem zu sein Zertifikat für (etwas, das eine normale HTTPS-proxy wäre in der Lage gewesen, um zu wissen, indem man die
CONNECT
Aufforderung durch den AUFTRAGGEBER).Wenn Sie nicht nach einem MITM-proxy, dann könnte man genauso gut lassen die anfängliche Verbindung über Ihren router. Wenn Sie aufzeichnen möchten, dass der Verkehr, der router einloggen, die verschlüsselten Pakete.
Dass Ihr router fangen die SSL/TLS-Pakete zu senden, Sie transparent an einen proxy, der wird letztendlich nur die Weiterleitung, dass der Verkehr unberührt ohnehin zu den Ziel-server nicht viel Sinn. (Von Natur aus, der transparente proxy bedeutet, dass der client nicht konfiguriert ist, zu wissen, über Sie, so dass es gewann ' T sogar senden Sie Ihre
CONNECT
Methode, mit der Sie hätte der angeforderte host und port. Hier wirst du wirklich nichts mehr als das, was der router kann.)EDIT: wieder, Sie einfach nicht in der Lage sein, die Verwendung eines HTTP-Proxys analysieren den Inhalt der Verbindung transparent. Auch wenn mit einem normalen proxy, HTTPS-Verbindung weitergeleitet wird direkt an den Ziel-server. Die SSL/TLS-Verbindung selbst hergestellt wird zwischen der original-client und dem Ziel-server. Der Punkt der Verwendung von SSL/TLS zu schützen, ist in diesem Zusammenhang, und um den Kunden kündigen, wenn etwas versucht, nach innen zu schauen und die Verbindung.
Plain-HTTP-proxy-Servern arbeiten, weil (a) der Verkehr gesehen werden kann (insbesondere, die request-line und dem HTTP -
Host
- header sichtbar sind, so dass der proxy wissen, die Anfrage selbst zu machen) und (b) der Verkehr kann verändert werden transparent, so dass der ursprüngliche client nicht bemerken, dass die Anforderung nicht direkt und funktioniert, als ob es war.Weder diese Bedingungen erfüllt sind, mit HTTPS. HTTPS-verbindungen über einen HTTP-proxy einfach tunnel, nach ausdrücklicher Anfrage des Kunden, in dem geschickt hat, eine
CONNECT
Befehl und wurde so konfiguriert, dass die Verwendung eines solchen proxy.Etwas zu tun in der Nähe, was Sie wollen, brauchen Sie ein SSL - /TLS-server, der akzeptiert die SSL/TLS-Verbindung und entziffert es (vielleicht sowas wie STunnel), bevor Sie Ihren HTTP-proxy. Jedoch, dies wird nicht transparent sein, weil es nicht in der Lage zu generieren, die die richtigen Zertifikate.