Etabler CONNECT før Asio-TLS-håndtrykket starter
Bruk neste lag i en Asio SSL-strøm til den vanlige HTTP-proxyutvekslingen, og start deretter TLS gjennom den aksepterte tunnelen.
For ssl::stream<tcp::socket> gjennom en vanlig HTTP-proxy bruker du den rå transporten før du ber den utføre TLS mot målet:
auto& transport = tlsStream.next_layer();- Koble transporten til proxyens vert og port. For et tillatt offentlig HTTPS-mål uten konfigurerte proxy-legitimasjoner tilbyr HTTP-proxylisten kandidatendepunkter; kontroller at kandidaten tillater den forespurte tunnelen.
- Send CONNECT med målets authority, for eksempel
api.example:443, og analyser de fullstendige svarhodene på den rå transporten. Et vellykket 2xx åpner tunnelen; en avvisning forblir et HTTP-proxysvar. - Konfigurer målets vertsnavn, påkrevd SNI, tillitsrøtter og peer-verifisering, og start deretter klienthåndtrykket på
tlsStream. - Når TLS er vellykket, bruk SSL-strømmens lesing og skriving for applikasjonen. Å lese neste lag direkte på det tidspunktet omgår TLS-behandlingen.
Ta med eventuelt overskudd fra HTTP-parseren til neste trinn. Asio har overbelastninger for bufret håndtrykk; å forkaste en hale som parseren eier kan miste bytes som allerede er lest fra sockelen.
Med denne enkle typen når både next_layer og lowest_layer TCP. Flere wrappere kan gjøre dem forskjellige, så velg grensesnittet som bærer proxyens faktiske wire-protokoll. En HTTPS-proxy legger til et ekstra TLS-trinn og ligger utenfor denne klartekst-CONNECT-sekvensen.