Ja ssl::stream<tcp::socket> iet caur parastu HTTP starpniekserveri, izmantojiet tā neapstrādāto transportu, pirms lūdzat tam veikt TLS uz galamērķi:

auto& transport = tlsStream.next_layer();
  1. Savienojiet šo transportu ar starpniekservera resursdatoru un portu. Atļautam publiskam HTTPS galamērķim bez konfigurētiem starpniekservera akreditācijas datiem HTTP starpniekserveru saraksts piedāvā kandidātu galapunktus; pārbaudiet, vai kandidāts atļauj pieprasīto tuneli.
  2. Nosūtiet CONNECT, norādot galamērķa authority, piemēram, api.example:443, un analizējiet pilnas atbildes galvenes neapstrādātajā transportā. Veiksmīgs 2xx atver tuneli; atteikums paliek HTTP starpniekservera atbilde.
  3. Konfigurējiet galamērķa resursdatora nosaukumu, nepieciešamo SNI, uzticības saknes un pārraudzības pārbaudi, pēc tam sāciet klienta rokasspiedienu uz tlsStream.
  4. Pēc veiksmīga TLS izmantojiet SSL straumes lasīšanu un rakstīšanu lietojumprogrammai. Nākamā slāņa tieša lasīšana tajā brīdī apiet TLS apstrādi.

Pārvietojiet jebkuru HTTP parsētāja pārpalikumu uz nākamo posmu. Asio ir buferēta rokasspiediena pārlodes; parsētājam piederošas astes atmešana var zaudēt baitus, kas jau nolasīti no ligzdas.

Ar šo vienkāršo tipu gan next_layer, gan lowest_layer sasniedz TCP. Vairāk ietvju var tos atšķirt, tāpēc izvēlieties saskarni, kas pārvadā starpniekservera faktisko vadu protokolu. HTTPS starpniekserveris pievieno vēl vienu TLS posmu un atrodas ārpus šīs vienkāršā teksta CONNECT secības.

Saistītie raksti