Muodosta CONNECT ennen Asio-TLS-kättelyn aloittamista
Käytä Asio SSL -virran seuraavaa kerrosta tavalliseen HTTP-välityspalvelinvaihtoon ja aloita sitten TLS hyväksytyn tunnelin kautta.
Kun ssl::stream<tcp::socket> kulkee tavallisen HTTP-välityspalvelimen kautta, käytä sen raakaa siirtokerrosta ennen kuin pyydät sitä tekemään TLS:n kohteeseen:
auto& transport = tlsStream.next_layer();- Yhdistä tuo siirtokerros välityspalvelimen isäntään ja porttiin. Sallitulle julkiselle HTTPS-kohteelle, jossa välityspalvelimen tunnuksia ei ole määritetty, HTTP-välityspalvelinluettelo tarjoaa ehdokaspäätepisteitä; varmista, että ehdokas sallii pyydetyn tunnelin.
- Lähetä CONNECT ilmoittaen kohteen authority, esimerkiksi
api.example:443, ja jäsennä täydet vastausotsakkeet raa'alla siirtokerroksella. Onnistunut 2xx avaa tunnelin; kieltäytyminen jää HTTP-välityspalvelimen vastaukseksi. - Määritä kohteen isäntänimi, vaadittu SNI, luottamusjuuret ja vertaisvarmennus ja aloita sitten asiakkaan kättely
tlsStream:ssa. - Kun TLS onnistuu, käytä SSL-virran lukuja ja kirjoituksia sovellukselle. Seuraavan kerroksen lukeminen suoraan siinä kohdassa ohittaa TLS-käsittelyn.
Siirrä HTTP-jäsentimen ylijäämä seuraavaan vaiheeseen. Asiossa on puskuroidun kättelyn ylikuormituksia; jäsentimen omistaman hännän hylkääminen voi kadottaa tavuja, jotka on jo luettu pistokkeesta.
Tällä yksinkertaisella tyypillä sekä next_layer että lowest_layer yltävät TCP:hen. Useammat kääreet voivat erottaa ne, joten valitse rajapinta, joka kuljettaa välityspalvelimen todellista wire-protokollaa. HTTPS-välityspalvelin lisää vielä yhden TLS-vaiheen ja on tämän selkokielisen CONNECT-jakson ulkopuolella.