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();
  1. 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.
  2. 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.
  3. Stel die bestemming se gasheernaam, die vereiste SNI, vertrouenswortels en eweknie-verifikasie in, en begin dan die kliënt-handskud op tlsStream.
  4. 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.

Verwante artikels