Set opp CONNECT før Asio-TLS-handtrykket startar
Bruk neste lag i ein Asio SSL-straum til den vanlege HTTP-proxyutvekslinga, og start deretter TLS gjennom den aksepterte tunnelen.
For ssl::stream<tcp::socket> gjennom ein vanleg HTTP-proxy brukar du den rå transporten før du ber han utføre TLS mot målet:
auto& transport = tlsStream.next_layer();- Kopla transporten til verten og porten til proxyen. For eit tillate offentleg HTTPS-mål utan konfigurerte proxy-innloggingar tilbyr HTTP-proxylista kandidatendepunkt; kontroller at kandidaten tillèt tunnelen som er beden om.
- Send CONNECT med authority til målet, til dømes
api.example:443, og analyser dei fullstendige svarhovuda på den rå transporten. Eit vellukka 2xx opnar tunnelen; ei avvising blir verande eit HTTP-proxysvar. - Konfigurer vertsnamnet til målet, påkravd SNI, tillitsrøter og peer-verifisering, og start deretter klienthandtrykket på
tlsStream. - Når TLS er vellukka, bruk lesing og skriving av SSL-straumen for applikasjonen. Å lese neste lag direkte på det tidspunktet omgår TLS-handsaminga.
Ta med eventuelt overskot frå HTTP-parsaren til neste trinn. Asio har overlastingar for bufra handtrykk; å kaste ein hale som parsaren eig kan miste byte som alt er lesne frå sokkelen.
Med denne enkle typen når både next_layer og lowest_layer TCP. Fleire wrapparar kan gjere dei ulike, så vel grensesnittet som ber den faktiske wire-protokollen til proxyen. Ein HTTPS-proxy legg til eit ekstra TLS-trinn og ligg utanfor denne klartekst-CONNECT-sekvensen.