Starigu CONNECT antaŭ ol komenci la Asio-TLS-manpremon
Uzu la sekvan tavolon de Asio-SSL-fluo por la ordinara HTTP-prokura interŝanĝo, poste komencu TLS tra la akceptita tunelo.
Por ssl::stream<tcp::socket> tra ordinara HTTP-prokuro, uzu ĝian krudan transporton antaŭ ol peti ĝin fari TLS al la celo:
auto& transport = tlsStream.next_layer();- Konektu tiun transporton al la prokura gastiganto kaj pordo. Por permesita publika HTTPS-celo sen agorditaj prokuraj legitimiloj, la listo de HTTP-prokuroj proponas kandidatajn finpunktojn; kontrolu, ĉu la kandidato permesas la petitan tunelon.
- Sendu CONNECT nomante la aŭtoritaton de la celo, ekzemple
api.example:443, kaj analizu la kompletan respondan kaplinion sur la kruda transporto. Sukcesa 2xx malfermas la tunelon; rifuzo restas HTTP-prokura respondo. - Agordi la gastigantnomon de la celo, la postulatan SNI, fido-radikojn kaj samtavolulon, poste komencu la klientan manpremon sur
tlsStream. - Post sukcesa TLS, uzu legadojn kaj skribojn de la SSL-fluo por la aplikaĵo. Rekte legi la sekvan tavolon ĉe tiu punkto preterpasas TLS-traktadon.
Portu ajnan superfluon de la HTTP-analizilo al la sekva etapo. Asio havas ŝargitajn manpremajn variantojn; forĵeti voston posedatan de la analizilo povas perdi bajtojn jam legitajn el la ingo.
Kun ĉi tiu simpla tipo, next_layer kaj lowest_layer ambaŭ atingas TCP. Pli da volvaĵoj povas malsamigi ilin, do elektu la interfacon portantan la realan dratan protokolon de la prokuro. HTTPS-prokuro aldonas alian TLS-etapon kaj staras ekster ĉi tiu klarteksta CONNECT-sekvenco.