HTTP CONNECT: cum gestionează un proxy HTTP traficul HTTPS
Urmărește o cerere HTTPS printr-un proxy HTTP, separă răspunsul CONNECT de cel al serverului de origine și identifică unde eșuează tunelul.
„200 Connection Established” înseamnă că proxy-ul acceptă un tunel. Site-ul nu a returnat încă nicio pagină. Urmează TLS cu destinația, apoi cererea HTTPS propriu-zisă.
De la conexiunea cu proxy-ul la răspunsul site-ului
- Clientul se conectează la endpointul proxy-ului.
- Îi cere proxy-ului să se conecteze la o gazdă și un port de destinație.
- Proxy-ul acceptă sau respinge cererea.
- După acceptare, clientul negociază TLS cu destinația prin tunel.
- Clientul trimite cererea HTTPS și primește răspunsul site-ului în interiorul TLS.
O conexiune refuzată la proxy, un tunel respins și o eroare de certificat apar în puncte diferite ale acestei secvențe. Găsește ultimul pas încheiat înainte să schimbi setările.
Schimbul CONNECT
În HTTP/1.1, un schimb simplificat arată astfel:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
Ținta cererii este o gazdă și un port, fără calea sau parametrii de interogare ai site-ului. După un răspuns CONNECT reușit, conexiunea transportă octeții tunelului. Pentru o destinație HTTPS, următorul schimb al clientului este negocierea TLS.
Citește codul numeric în loc să cauți o potrivire exactă cu fraza explicativă în engleză. Proxy-urile pot folosi texte diferite pentru același cod de stare.
Urmărește cu curl
Pentru un proxy HTTP pe portul local 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Înlocuiește adresa de ascultare cu endpointul tău; dacă ai nevoie de candidați, consultă lista de proxy-uri HTTP și testează intrarea aleasă. Lista de excepții goală asigură că acest apel selectează proxy-ul. Caută în ordine cronologică conexiunea cu proxy-ul, răspunsul CONNECT, verificarea certificatului destinației și răspunsul site-ului. Formularea exactă a jurnalului depinde de compilarea curl.
Destinația poate returna 404, 429 sau 500 după ce proxy-ul acceptă tunelul. Poate eșua și în timpul TLS, înainte de orice răspuns HTTP.
Unde s-a oprit?
| Observație | Ce verifici mai departe |
|---|---|
| Conexiunea la proxy este refuzată | Adresa proxy-ului, portul de ascultare, procesul și accesul la rețea. |
| Proxy-ul returnează 407 | Contul proxy-ului și schema de autentificare. |
| Proxy-ul respinge o destinație sau un port | Politica de acces și destinațiile CONNECT permise. |
| Tunelul se deschide, apoi verificarea TLS eșuează | Numele destinației, depozitul de încredere, ceasul și orice interceptare TLS administrată. |
| TLS reușește, iar site-ul returnează o eroare | Răspunsul site-ului. |
Pentru comparații, păstrează o parte neschimbată: încearcă altă destinație prin același proxy sau compară aceeași destinație pe o rută directă permisă.
Tunelul are în continuare un operator
Proxy-ul cunoaște destinația CONNECT și gestionează temporizarea și volumul traficului. TLS obișnuit de la un capăt la altul protejează conținutul aplicației site-ului față de un proxy care nu încheie acea sesiune TLS. Un proxy de interceptare administrat, în care clientul are încredere, are un alt model de încredere.