Foar ssl::stream<tcp::socket> fia in gewoane HTTP-proxy brûk jo de rauwe transportlaach foardat jo it freegje om TLS nei de bestimming te dwaan:

auto& transport = tlsStream.next_layer();
  1. Ferbyn dy transportlaach oan de proxy-host en -poart. Foar in tastiene iepenbiere HTTPS-bestimming sûnder ynstelde proxy-gegevens biedt de HTTP-proxylist kandidaat-einpunten; kontrolearje dat de kandidaat de frege tunnel tastiet.
  2. Stjoer CONNECT mei de authority fan de bestimming, bygelyks api.example:443, en analysearje de folsleine antwurdkoppen op 'e rauwe transportlaach. In slagge 2xx iepenet de tunnel; in ôfwizing bliuwt in HTTP-proxy-antwurd.
  3. Konfigurearje de hostnamme fan de bestimming, de fereaske SNI, fertrouwenswoartels en peer-ferifikaasje, en start dan de kliïnt-hânskip op tlsStream.
  4. Nei in slagge TLS brûk jo lêzen en skriuwen fan 'e SSL-stream foar de applikaasje. It folgjende laach direkt lêze op dat stuit giet om TLS-ferwurking hinne.

Drage alle oerskot fan 'e HTTP-parser nei de folgjende stap. Asio hat oerladen foar bufferbe hanthanneling; it weismiten fan in sturt dy't de parser besit kin bytes ferlieze dy't al fan 'e socket lêzen binne.

Mei dit ienfâldige type berikke next_layer en lowest_layer beide TCP. Mear omslaggen kinne se ferskille litte, dus kies de ynterface dy't it echte wire-protokol fan 'e proxy draacht. In HTTPS-proxy foeget noch in TLS-stap ta en leit bûten dizze platte-tekst-CONNECT-sekwinsje.

Relatearre artikelen