Hozzon létre CONNECT-et az Asio TLS kézfogás előtt
Használja egy Asio SSL-folyam következő rétegét a sima HTTP-proxy cseréhez, majd indítsa el a TLS-t az elfogadott alagúton.
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();- 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.
- 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. - Á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. - 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.