ssl::stream<tcp::socket> esetén egy közönséges HTTP-proxy mögött használja a nyers átviteli rétegét, mielőtt TLS-t kérne tőle a cél felé:

auto& transport = tlsStream.next_layer();
  1. Csatlakoztassa ezt az átviteli réteget a proxy hosztjához és portjához. Egy engedélyezett nyilvános HTTPS-célhoz, ahol nincs beállítva proxy-hitelesítés, a HTTP-proxy lista jelölt végpontokat kínál; ellenőrizze, hogy a jelölt engedélyezi-e a kért alagutat.
  2. Küldjön CONNECT-et a cél authority megnevezésével, például api.example:443, és elemezze a teljes válaszfejléceket a nyers átviteli rétegen. Egy sikeres 2xx megnyitja az alagutat; az elutasítás HTTP-proxy válasz marad.
  3. Állítsa be a cél hosztnevét, a szükséges SNI-t, a megbízhatósági gyökereket és a partner ellenőrzését, majd indítsa el az ügyfél kézfogását a tlsStream-on.
  4. A sikeres TLS után használja az SSL-folyam olvasását és írását az alkalmazáshoz. A következő réteg közvetlen olvasása ezen a ponton megkerüli a TLS-feldolgozást.

Vigye át az HTTP-elemző bármilyen maradékát a következő szakaszba. Az Asiónak vannak puffert kézfogás-túlterhelései; az elemző tulajdonában lévő farok eldobása elveszítheti a socketből már beolvasott bájtokat.

Ezzel az egyszerű típussal a next_layer és a lowest_layer is eléri a TCP-t. Több burkoló különbözővé teheti őket, ezért válassza azt a felületet, amely a proxy tényleges huzalprotokollját hordozza. Az HTTPS-proxy még egy TLS-szakaszt ad hozzá, és ezen a nyílt szövegű CONNECT-sorrenden kívül esik.

Kapcsolódó cikkek