Stel CONNECT op voordat die Asio-TLS-handskud begin
Gebruik die volgende laag van 'n Asio SSL-stroom vir die gewone HTTP-proksie-uitruiling en begin dan TLS deur die aanvaarde tonnel.
Vir ssl::stream<tcp::socket> deur 'n gewone HTTP-proksie, gebruik sy rou transport voordat jy dit vra om TLS na die bestemming te doen:
auto& transport = tlsStream.next_layer();- Verbind daardie transport aan die proksie-gasheer en -poort. Vir 'n toegelate publieke HTTPS-bestemming sonder proksie-aanmeldgegewens bied die HTTP-proksielys kandidaat-eindpunte; kyk of die kandidaat die gevraagde tonnel toelaat.
- Stuur CONNECT met die bestemming se authority, soos
api.example:443, en ontleed die volledige antwoordopskrifte op die rou transport. 'n Suksesvolle 2xx maak die tonnel oop; 'n weiering bly 'n HTTP-proksie-antwoord. - Stel die bestemming se gasheernaam, die vereiste SNI, vertrouenswortels en eweknie-verifikasie in, en begin dan die kliënt-handskud op
tlsStream. - Nadat TLS geslaag het, gebruik SSL-stroom-lees en -skryf vir die toepassing. Om op daardie punt die volgende laag direk te lees, omseil TLS-verwerking.
Dra enige oorskot van die HTTP-ontleder na die volgende stadium. Asio het oorlaaide buffered-handskud-variante; om 'n stert wat die ontleder besit weg te gooi, kan grepe verloor wat reeds uit die socket gelees is.
Met hierdie eenvoudige tipe bereik next_layer en lowest_layer albei TCP. Meer omhulsels kan hulle verskillend maak, so kies die koppelvlak wat die proksie se werklike draadprotokol dra. 'n HTTPS-proksie voeg nog 'n TLS-stadium by en val buite hierdie gewone CONNECT-reeks.