Vendosni CONNECT përpara se të filloni handshake-un TLS të Asio
Përdorni shtresën e poshtme të rrjedhës SSL të Asio për shkëmbimin me një proxy HTTP të zakonshëm, pastaj nisni TLS përmes tunelit të pranuar.
Për ssl::stream<tcp::socket> përmes një proxy HTTP të zakonshëm, përdorni së pari transportin e tij të papërpunuar dhe vetëm pastaj kërkoni prej tij TLS drejt destinacionit:
auto& transport = tlsStream.next_layer();
- Lidhni atë transport me hostin dhe portën e proxy-t. Kur destinacioni publik HTTPS është i lejuar dhe kredencialet e proxy-t nuk janë konfiguruar, lista e proxy-ve HTTP ofron pika fundore kandidate; kontrolloni që kandidati të lejojë tunelin e kërkuar.
- Dërgoni CONNECT duke treguar authority-n e destinacionit, si
api.example:443, dhe analizoni titujt e plotë të përgjigjes në transportin e thjeshtë. Një 2xx i suksesshëm hap tunelin; një refuzim mbetet përgjigje e proxy-t HTTP. - Konfiguroni emrin e hostit të destinacionit, SNI-n e nevojshme, rrënjët e besimit dhe verifikimin e peer-it, pastaj nisni handshake-un e klientit në
tlsStream. - Pasi TLS të ketë sukses, përdorni leximet dhe shkrimet përmes rrjedhës SSL për aplikacionin. Leximi i drejtpërdrejtë i shtresës së poshtme në atë pikë anashkalon përpunimin e TLS.
Bartni çdo tepricë të parserit HTTP në fazën tjetër. Asio ka mbingarkesa handshake me bufer; hedhja e bishtit që zotëron parseri mund të humbasë bajtë të lexuar tashmë nga socket-i.
Me këtë tip të thjeshtë, next_layer dhe lowest_layer arrijnë të dyja TCP. Më shumë mbështjellës mund t'i ndryshojnë, prandaj zgjidhni ndërfaqen që mban protokollin real të proxy-t. Një proxy HTTPS shton një fazë tjetër TLS dhe nuk bën pjesë në këtë sekuencë CONNECT në tekst të thjeshtë.