HTTP CONNECT: So überträgt ein HTTP-Proxy HTTPS
Verfolgen Sie eine HTTPS-Anfrage durch einen HTTP-Proxy, unterscheiden Sie CONNECT- und Ursprungsantwort und finden Sie die Stelle, an der der Tunnel scheitert.
„200 Connection Established“ bedeutet, dass der Proxy einen Tunnel akzeptiert. Die Website hat noch keine Seite zurückgegeben. Als Nächstes folgt TLS mit dem Ziel, danach die eigentliche HTTPS-Anfrage.
Von der Proxyverbindung zur Websiteantwort
- Der Client verbindet sich mit dem Proxy-Endpunkt.
- Er bittet den Proxy, eine Verbindung zu einem Zielhost und Port herzustellen.
- Der Proxy akzeptiert oder verweigert diese Anfrage.
- Nach der Annahme handelt der Client durch den Tunnel TLS mit dem Ziel aus.
- Der Client sendet die HTTPS-Anfrage und empfängt die Antwort der Website innerhalb von TLS.
Eine verweigerte Proxyverbindung, ein abgelehnter Tunnel und ein Zertifikatsfehler treten an unterschiedlichen Stellen dieser Abfolge auf. Finden Sie den letzten abgeschlossenen Schritt, bevor Sie Einstellungen ändern.
Der CONNECT-Austausch
In HTTP/1.1 sieht ein vereinfachter Austausch so aus:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
Das Anfrageziel besteht aus Host und Port, ohne Pfad oder Abfrageparameter der Website. Nach einer erfolgreichen CONNECT-Antwort transportiert die Verbindung Tunnelbytes. Bei einem HTTPS-Ziel ist der nächste Austausch des Clients der TLS-Handshake.
Lesen Sie den numerischen Status, statt die englische Begründung als Zeichenfolge abzugleichen. Proxys können für denselben Status unterschiedliche Texte verwenden.
Mit curl beobachten
Für einen HTTP-Proxy auf dem lokalen Port 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Ersetzen Sie die Listener-Adresse durch Ihren Endpunkt. Falls Sie Kandidaten benötigen, sehen Sie in der HTTP-Proxy-Liste nach und testen Sie den gewählten Eintrag. Die leere Ausnahmeliste sorgt dafür, dass dieser Aufruf den Proxy auswählt. Suchen Sie in zeitlicher Reihenfolge nach Proxyverbindung, CONNECT-Antwort, Prüfung des Zielzertifikats und Websiteantwort. Der genaue Wortlaut des Protokolls hängt vom curl-Build ab.
Das Ziel kann 404, 429 oder 500 zurückgeben, nachdem der Proxy den Tunnel akzeptiert hat. Der Vorgang kann auch bereits während TLS scheitern, bevor irgendeine HTTP-Antwort zurückkommt.
Wo blieb der Ablauf stehen?
| Beobachtung | Als Nächstes untersuchen |
|---|---|
| Die Verbindung zum Proxy wird verweigert | Proxyadresse, Listener-Port, Prozess und Netzwerkzugriff. |
| Der Proxy gibt 407 zurück | Proxykonto und Authentifizierungsverfahren. |
| Der Proxy lehnt ein Ziel oder einen Port ab | Zugriffsrichtlinie und erlaubte CONNECT-Ziele. |
| Der Tunnel öffnet sich, danach scheitert die TLS-Prüfung | Zielname, Vertrauensspeicher, Uhrzeit und gegebenenfalls verwaltetes TLS-Abfangen. |
| TLS gelingt und die Website meldet einen Fehler | Die Antwort der Website. |
Halten Sie beim Vergleichen eine Seite konstant: Testen Sie ein anderes Ziel über denselben Proxy oder vergleichen Sie dasselbe Ziel über eine erlaubte direkte Route.
Auch der Tunnel hat einen Betreiber
Der Proxy kennt das CONNECT-Ziel und verarbeitet zeitlichen Verlauf und Umfang des Datenverkehrs. Übliches Ende-zu-Ende-TLS schützt die Anwendungsinhalte der Website vor einem Proxy, der diese TLS-Sitzung nicht terminiert. Für einen verwalteten Abfangproxy, dem der Client vertraut, gilt ein anderes Vertrauensverhältnis.