HTTP CONNECT: kiel HTTP-prokurilo traktas HTTPS
Sekvu HTTPS-peton tra HTTP-prokurilo, apartigu la CONNECT-respondon de la respondo de la origina servilo kaj trovu, kie la tunelo malsukcesas.
“200 Connection Established” signifas, ke la prokurilo akceptas tunelon. La retejo ankoraŭ ne resendis paĝon. Sekvas TLS kun la celo, kaj poste la HTTPS-peto mem.
De konekto al la prokurilo ĝis la reteja respondo
- La kliento konektiĝas al la finpunkto de la prokurilo.
- Ĝi petas, ke la prokurilo konektiĝu al cela gastiganto kaj pordo.
- La prokurilo akceptas aŭ rifuzas tiun peton.
- Post akcepto la kliento interkonsentas TLS kun la celo tra la tunelo.
- La kliento sendas la HTTPS-peton kaj ricevas la retejan respondon interne de TLS.
Rifuzita konekto al la prokurilo, rifuzita tunelo kaj atestila eraro okazas ĉe malsamaj punktoj de tiu sinsekvo. Trovu la laste finitan paŝon antaŭ ol ŝanĝi agordojn.
La CONNECT-interŝanĝo
En HTTP/1.1 simpligita interŝanĝo aspektas jene:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
La petcelo estas gastiganto kaj pordo, sen la vojo aŭ demandoparametroj de la retejo. Post sukcesa CONNECT-respondo la konekto portas tunelbajtojn. Por HTTPS-celo la sekva interŝanĝo de la kliento estas la TLS-manpremo.
Legu la nombran staton anstataŭ kongruigi la anglan klarigan frazon. Prokuriloj povas uzi malsamajn tekstojn por la sama stato.
Observu per curl
Por HTTP-prokurilo ĉe loka pordo 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Anstataŭigu la aŭskultadreson per via finpunkto; se vi bezonas kandidatojn, trarigardu la liston de HTTP-prokuriloj kaj provu la elektitan eron. La malplena preterira listo certigas, ke tiu alvoko elektas la prokurilon. Laŭtempe serĉu la prokurilan konekton, CONNECT-respondon, kontrolon de la cela atestilo kaj retejan respondon. La preciza protokolteksto dependas de la kompilaĵo de curl.
La celo povas resendi 404, 429 aŭ 500 post kiam la prokurilo akceptis la tunelon. Ĝi ankaŭ povas malsukcesi dum TLS antaŭ ol resendi iun ajn HTTP-respondon.
Kie ĝi haltis?
| Observo | Kion esplori poste |
|---|---|
| La konekto al la prokurilo estas rifuzita | Prokuriladreso, aŭskultpordo, procezo kaj reta aliro. |
| La prokurilo resendas 407 | La prokurila konto kaj aŭtentikiga skemo. |
| La prokurilo rifuzas celon aŭ pordon | Alirpolitiko kaj permesitaj CONNECT-celoj. |
| La tunelo malfermiĝas, poste TLS-kontrolo malsukcesas | Celnomo, fidindatestila deponejo, horloĝo kaj eventuala administrata TLS-interkapto. |
| TLS sukcesas kaj la retejo resendas eraron | La respondo de la retejo. |
Por kompari, tenu unu flankon senŝanĝa: provu alian celon tra la sama prokurilo aŭ komparu la saman celon per permesita rekta vojo.
La tunelo ankoraŭ havas funkciigiston
La prokurilo konas la CONNECT-celon kaj traktas la tempigon kaj volumenon de la trafiko. Ordinara fin-al-fina TLS protektas la aplikaĵan enhavon de la retejo kontraŭ prokurilo, kiu ne finas tiun TLS-sesion. Administrata interkapta prokurilo, kiun la kliento fidas, havas alian fidaranĝon.