So leiten Sie HTTPS CONNECT-Anfragen mit Squid Explicit Proxy um

So leiten Sie HTTPS CONNECT-Anfragen mit Squid Explicit Proxy um

Ich möchte bestimmte URLs für einige Benutzer meines internen Netzwerks blockieren. Zu diesem Zweck verwende ich einen expliziten Proxy auf Squid-Basis mit einem Redirect_Program. Die Clients sind so konfiguriert, dass sie eine PAC-Datei für HTTPS-URLs verwenden, wodurch sie ihre HTTPS-Anfragen an den expliziten Proxy weiterleiten.

Das Problem ist, dass die Umleitung einer CONNECT-Anfrage für eine https-URL zu einer blockierten Seiten-URL fehlschlägt. Ich habe sowohl http- als auch https-basierte blockierte Seiten-URLs ausprobiert, aber ohne Erfolg. Aus irgendeinem Grund möchte ich keinen transparenten Proxy mit SSL-Bumping verwenden.

  1. Safari gibt die Fehlermeldung „Safari kann die Seite nicht öffnen. Der Fehler lautete: „Beim Herstellen eines sicheren Tunnels über den Web-Proxy-Server ist ein Problem aufgetreten.““

  2. Chrome gibt den Fehler „Diese Webseite ist nicht verfügbar. ERR_TUNNEL_CONNECTION_FAILED“ aus.

Hier ist eine Zeile aus access.log fürhttps://www.yahoo.com.

07/Okt/2015:01:41:29 -0500 74 172.0.0.9 TCP_REDIRECT/302 253 CONNECT www.yahoo.com:443 - HIER_NONE/- -

Ich habe irgendwo gelesen, dass der Browser nach der Verbindungsanfrage einen SSL/TLS-Handshake starten möchte und dass dies der Grund ist, warum es fehlschlägt. Hier ist ein Zitat aus der Dokumentation des Squid-Redirectors.

„URL-Änderungen und insbesondere Umleitungen sind nur bei bestimmten Methoden möglich, und einige wie POST und CONNECT erfordern besondere Sorgfalt.“

Es heißt nicht, dass eine Umleitung für die CONNECT-Methode nicht möglich ist. Allerdings wird nirgends erwähnt, wie wir POST und CONNECT umleiten können (ich interessiere mich besonders für CONNECT), oder es wird ein Beispiel gegeben.

Bitte erklären Sie mir, wie ich HTTPS-Verbindungsanfragen auf eine blockierte Seite umleiten kann. Wenn dies nicht möglich ist, gibt es dafür eine Lösung mit einem expliziten Proxy? Danke.

Ich verwende Squid 3.5.4 auf Ubuntu.

Antwort1

Leider ist dies nicht möglich, ohne zuerst die SSL-Verbindung zu stoßen (entschlüsseln). Die Browser verweigern per Design jegliche zusätzliche Nutzlast/Umleitung von fehlgeschlagenen CONNECT-Anfragen. Eine genauere Beschreibung finden Sie unter -http://docs.diladele.com/faq/squid/kann keine_verbindung_zur_site_unter_https_herstellen.html.

Wenn duTunWenn Sie sich für die SSL-Entschlüsselung entscheiden, können Sie zunächst die CONNECT-Anforderung erfolgreich ausführen lassen und später die nächste HTTP-Anforderung, die durch diesen hergestellten Verbindungstunnel kommt, blockieren/umleiten. Bedenken Sie dabei, dass es sich möglicherweise nicht einmal um HTTP handelt, da einige Anwendungen (wie zum Beispiel Skype) CONNECT-Proxy-Tunneling für ihre eigenen Protokolle verwenden.

Außerdem sollten Sie bedenken: Wenn die Anwendung beim Senden von CONNECT-Anfragen an den Proxy die Technik „SSL-Pinning“ verwendet, wird sie die Arbeit mit entschlüsselten Verbindungen verweigern.

verwandte Informationen