HTTP CONNECT: jak HTTP proxy zpracovává HTTPS
Sledujte HTTPS požadavek přes HTTP proxy, odlište odpověď CONNECT od odpovědi původního serveru a zjistěte, kde tunel selhává.
„200 Connection Established“ znamená, že proxy přijímá tunel. Web zatím nevrátil žádnou stránku. Následuje TLS s cílem a poté samotný HTTPS požadavek.
Od spojení s proxy k odpovědi webu
- Klient se připojí ke koncovému bodu proxy.
- Požádá proxy o připojení k cílovému hostiteli a portu.
- Proxy tento požadavek přijme, nebo odmítne.
- Po přijetí klient skrze tunel vyjedná TLS s cílem.
- Klient odešle HTTPS požadavek a v rámci TLS obdrží odpověď webu.
Odmítnuté spojení s proxy, zamítnutý tunel a chyba certifikátu nastávají v různých bodech této posloupnosti. Než změníte nastavení, najděte poslední dokončený krok.
Výměna CONNECT
V HTTP/1.1 vypadá zjednodušená výměna takto:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
Cílem požadavku je hostitel a port, bez cesty či parametrů dotazu webu. Po úspěšné odpovědi CONNECT spojení přenáší bajty tunelu. U HTTPS cíle je další výměnou klienta TLS handshake.
Čtěte číselný stav místo porovnávání anglického vysvětlujícího textu. Proxy mohou pro stejný stav používat různá slova.
Sledování pomocí curl
Pro HTTP proxy na místním portu 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Nahraďte naslouchací adresu svým koncovým bodem. Potřebujete-li kandidáty, projděte seznam HTTP proxy a otestujte vybraný záznam. Prázdný seznam výjimek zajistí, že toto volání zvolí proxy. V časovém pořadí hledejte spojení s proxy, odpověď CONNECT, ověření cílového certifikátu a odpověď webu. Přesné znění protokolu závisí na sestavení curl.
Cíl může vrátit 404, 429 nebo 500 poté, co proxy přijme tunel. Může také selhat během TLS ještě před jakoukoli HTTP odpovědí.
Kde se to zastavilo?
| Pozorování | Co prověřit dál |
|---|---|
| Spojení s proxy je odmítnuto | Adresu proxy, naslouchací port, proces a přístup k síti. |
| Proxy vrací 407 | Účet proxy a způsob autentizace. |
| Proxy odmítá cíl nebo port | Pravidla přístupu a povolené cíle CONNECT. |
| Tunel se otevře, ale pak selže ověření TLS | Název cíle, úložiště důvěryhodných certifikátů, hodiny a případné spravované zachytávání TLS. |
| TLS uspěje a web vrátí chybu | Odpověď webu. |
Při porovnávání ponechte jednu stranu stejnou: zkuste jiný cíl přes stejnou proxy nebo porovnejte stejný cíl přes povolenou přímou trasu.
Tunel má stále provozovatele
Proxy zná cíl CONNECT a zpracovává časování i objem provozu. Běžné koncové TLS chrání aplikační obsah webu před proxy, která tuto relaci TLS neukončuje. Spravovaná zachytávající proxy, které klient důvěřuje, má jiné uspořádání důvěry.