Die JVM erlaubt den Proxy-Eigenschaften http.proxyHost und http.proxyPort zur Angabe eines HTTP-Proxy-Servers und https.proxyHost und https.proxyPort zur Angabe eines HTTPS-Proxy-Servers.
Ich habe mich gefragt, ob es irgendwelche Vorteile gibt, einen HTTPS-Proxy-Server im Vergleich zu einem HTTP-Proxy-Server zu verwenden?
Ist der Zugriff auf eine https-URL über einen HTTPS-Proxy weniger mühsam als der Zugriff von einem HTTP-Proxy?
Der HTTP-Proxy erhält eine Klartextanfrage und sendet [in den meisten, aber nicht allen Fällen] eine andere HTTP-Anfrage an den Remote-Server und gibt dann Informationen an den Client zurück.
Der HTTPS-Proxy ist ein Relayer, der eine spezielle HTTP-Anfrage (CONNECT-Verb) empfängt und einen undurchsichtigen Tunnel zum Zielserver baut (der nicht notwendigerweise sogar ein HTTPS-Server ist). Dann sendet der Client eine SSL / TLS-Anfrage an den Server und sie setzen mit SSL-Handshake und dann mit HTTPS fort (falls gewünscht).
Wie Sie sehen, sind dies zwei völlig unterschiedliche Proxy-Typen mit unterschiedlichem Verhalten und unterschiedlichen Design-Zielen. Der HTTPS-Proxy kann nichts zwischenspeichern, da die Anforderung nicht an den Server gesendet wird. Mit HTTPS-Proxy haben Sie einen Kanal zum Server und der Client empfängt und validiert das Serverzertifikat (und optional umgekehrt). Der HTTP-Proxy hingegen sieht und hat die Kontrolle über die Anfrage, die er vom Client erhalten hat.
Während HTTPS-Anfragen über HTTP-Proxy gesendet werden können, wird dies fast nie durchgeführt, da der Proxy in diesem Szenario das Zertifikat des Servers validiert, der Client jedoch nur das Zertifikat des Proxy-Servers und als Name im Proxy-Zertifikat empfangen und validieren kann wird nicht mit der Adresse übereinstimmen, mit der der Socket verbunden ist, in den meisten Fällen wird eine Warnung ausgegeben und der SSL-Handshake wird nicht erfolgreich sein (ich gehe nicht auf Einzelheiten ein, wie versucht werden soll, dies zu beheben).
Schließlich, da der HTTP-Proxy in die Anfrage Einsicht nehmen kann, macht dies die Idee der Sicherheit des HTTPS-Kanals ungültig. Daher wird die Verwendung von HTTP-Proxy für HTTPS-Anfragen normalerweise nur zu Debugging-Zwecken durchgeführt (wieder lassen wir Fälle von paranoiden Sicherheitsrichtlinien des Unternehmens weg eine Überwachung des gesamten HtTPS-Verkehrs von Mitarbeitern des Unternehmens erfordern).
Zusatz: Lesen Sie auch meine Antwort zu dem ähnlichen Thema hier .
Es gibt keine Vor- und Nachteile. Und es gibt keinen "HTTPS-Proxy" -Server.
Sie können den Protokollhandlern mitteilen, welchen Proxy-Server sie für verschiedene Protokolle verwenden soll. Dies kann für http
, https
, ftp
und socks
erfolgen. Nicht mehr und nicht weniger.
Ich kann Ihnen nicht sagen, ob Sie einen anderen Proxy für https-Verbindungen verwenden sollten oder nicht. Es kommt darauf an. Ich kann nur den Unterschied einer HTTP- und HTTPS-Anfrage zu einem Proxy erklären.
Da der HTTP-Proxy (oder der Web-Proxy) HTTP
(daher der Name) versteht, kann der Client die Anfrage einfach an den Proxy-Server senden, anstatt die eigentliche Destination zu verwenden.
Dies funktioniert nicht für HTTPS
.
Dies liegt daran, dass der Proxy den TLS-Handshake nicht durchführen kann, was zuerst geschieht.
Daher muss der Client eine CONNECT
-Anfrage an den Proxy senden.
Der Proxy baut eine TCP-Verbindung auf und sendet die Pakete einfach hin und her, ohne sie zu berühren.
Der TLS-Handshake findet also zwischen Client und Destenation statt.
Der HTTP-Proxy-Server sieht nicht alles und validiert nicht das Zertifikat des Destenation-Servers.
Es kann etwas Verwirrung mit dieser ganzen http, https, Proxy-Sache geben. Es ist möglich, mit einen HTTP-Proxy mit https zu verbinden. In diesem Fall ist die Kommunikation zwischen dem Client und dem -Proxy verschlüsselt.
Es gibt auch sogenannte TLS terminating
oder interception
Proxy Server wie Squid's SSL Peek and Splice oder rülpsen , die alles sehen .
Dies sollte jedoch nicht ohne weiteres funktionieren, da der Proxy eigene Zertifikate verwendet, die nicht von vertrauenswürdigen CAs signiert sind.