CONNECT opbauen, ier den Asio-TLS-Handshake ufänkt
Benotzt déi nächst Schicht vun engem Asio SSL-Stream fir den einfachen HTTP-Proxy-Austausch an start duerno TLS duerch den akzeptéierten Tunnel.
Fir ssl::stream<tcp::socket> iwwer en normale HTTP-Proxy benotzt säi rohen Transport, ier Dir him freet, TLS zum Zil ze maachen:
auto& transport = tlsStream.next_layer();- Verbannt deen Transport mam Host a Port vum Proxy. Fir en erlaabt ëffentlecht HTTPS-Zil ouni konfiguréiert Proxy-Umeldungsdonnéeën bitt d'HTTP-Proxy-Lëscht Kandidat-Endpunkten; kontrolléiert, ob de Kandidat den ugefrote Tunnel erlaabt.
- Schéckt CONNECT mam Authority vum Zil, zum Beispill
api.example:443, a analyséiert déi komplett Äntwertheader um rohen Transport. En erfollegräiche 2xx mécht den Tunnel op; eng Oflehnung bleift eng HTTP-Proxy-Äntwert. - Konfiguréiert den Hostnumm vum Zil, de benötigten SNI, d'Vertrauenswuerzelen an d'Peer-Verifikatioun, an start dann den Client-Handshake um
tlsStream. - Nodeems TLS gegleeft huet, benotzt d'Liesen an d'Schreiwe vum SSL-Stream fir d'Applikatioun. Déi nächst Schicht direkt ze liesen ëmgeet d'TLS-Verarbechtung.
Hëlt all Iwwerschoss vum HTTP-Parser an déi nächst Etapp mat. Asio huet Iwwerlaaschtunge fir gepufferten Handshake; eng Schwanz, déi dem Parser gehéiert, ewechzegeheien kann Bytes verléieren, déi schonn aus dem Socket gelies goufen.
Mat dësem einfachen Typ erreechen next_layer an lowest_layer allebéid TCP. Méi Wrappen kënnen se ënnerscheeden, dofir wielt d'Interface, déi dat tatsächlech Wire-Protokoll vum Proxy dréit. En HTTPS-Proxy füügt eng aner TLS-Etapp derbäi an ass ausserhalb vun dëser Klartext-CONNECT-Sequenz.