HTTP CONNECT: kaip HTTP tarpinis serveris tvarko HTTPS
Sekite HTTPS užklausą per HTTP tarpinį serverį, atskirkite CONNECT atsakymą nuo pradinio serverio atsakymo ir raskite tunelio gedimo vietą.
„200 Connection Established“ reiškia, kad tarpinis serveris priima tunelį. Svetainė dar negrąžino puslapio. Toliau vyksta TLS su paskirties serveriu, o tada pati HTTPS užklausa.
Nuo prisijungimo prie tarpinio serverio iki svetainės atsakymo
- Klientas prisijungia prie tarpinio serverio galinio taško.
- Jis paprašo tarpinio serverio prisijungti prie paskirties pagrindinio kompiuterio ir prievado.
- Tarpinis serveris priima arba atmeta šį prašymą.
- Priėmus prašymą, klientas per tunelį derasi dėl TLS su paskirties serveriu.
- Klientas siunčia HTTPS užklausą ir gauna svetainės atsakymą TLS viduje.
Atmestas ryšys su tarpiniu serveriu, nepriimtas tunelis ir sertifikato klaida atsiranda skirtingose šios sekos vietose. Prieš keisdami nustatymus raskite paskutinį užbaigtą žingsnį.
CONNECT apsikeitimas
HTTP/1.1 atveju supaprastintas apsikeitimas atrodo taip:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
Užklausos tikslas yra pagrindinis kompiuteris ir prievadas, be svetainės kelio ar užklausos parametrų. Po sėkmingo CONNECT atsakymo ryšiu perduodami tunelio baitai. HTTPS paskirties atveju kitas kliento apsikeitimas yra TLS rankos paspaudimas.
Skaitykite skaitinį būsenos kodą, o ne lyginkite anglišką paaiškinimo frazę. Tarpiniai serveriai tai pačiai būsenai gali naudoti skirtingą tekstą.
Stebėjimas su curl
HTTP tarpiniam serveriui vietiniame prievade 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Pakeiskite klausymosi adresą savo galiniu tašku. Jei reikia kandidatų, peržiūrėkite HTTP tarpinių serverių sąrašą ir išbandykite pasirinktą įrašą. Tuščias išimčių sąrašas užtikrina, kad šis iškvietimas pasirinktų tarpinį serverį. Chronologine tvarka ieškokite ryšio su tarpiniu serveriu, CONNECT atsakymo, paskirties sertifikato patikros ir svetainės atsakymo. Tikslus žurnalo tekstas priklauso nuo curl komponavimo.
Paskirties serveris gali grąžinti 404, 429 arba 500 po to, kai tarpinis serveris priėmė tunelį. Triktis gali įvykti ir TLS metu, dar prieš grąžinant bet kokį HTTP atsakymą.
Kur sustojo?
| Pastebėjimas | Ką tirti toliau |
|---|---|
| Ryšys su tarpiniu serveriu atmetamas | Tarpinio serverio adresą, klausymosi prievadą, procesą ir prieigą prie tinklo. |
| Tarpinis serveris grąžina 407 | Tarpinio serverio paskyrą ir autentifikavimo schemą. |
| Tarpinis serveris atmeta paskirtį ar prievadą | Prieigos taisykles ir leidžiamas CONNECT paskirtis. |
| Tunelis atidaromas, tada TLS patikra nepavyksta | Paskirties vardą, pasitikėjimo saugyklą, laikrodį ir galimą valdomą TLS perėmimą. |
| TLS pavyksta, o svetainė grąžina klaidą | Svetainės atsakymą. |
Lygindami nekeiskite vienos pusės: išbandykite kitą paskirtį per tą patį tarpinį serverį arba palyginkite tą pačią paskirtį leidžiamu tiesioginiu maršrutu.
Tunelis vis tiek turi operatorių
Tarpinis serveris žino CONNECT paskirtį ir tvarko srauto laiką bei apimtį. Įprastas TLS nuo vieno galo iki kito apsaugo svetainės programos turinį nuo tarpinio serverio, kuris neužbaigia tos TLS sesijos. Valdomas perėmimo tarpinis serveris, kuriuo pasitiki klientas, turi kitokį pasitikėjimo modelį.