Wujudkan CONNECT sebelum memulakan jabat tangan TLS Asio
Gunakan lapisan seterusnya strim SSL Asio untuk pertukaran HTTP biasa melalui proksi, kemudian mulakan TLS melalui terowong yang diterima.
Untuk ssl::stream<tcp::socket> melalui proksi HTTP biasa, gunakan pengangkutan mentahnya sebelum memintanya melakukan TLS ke destinasi:
auto& transport = tlsStream.next_layer();- Sambungkan pengangkutan itu ke hos dan port proksi. Untuk destinasi HTTPS awam yang dibenarkan tanpa kelayakan proksi dikonfigurasikan, senarai proksi HTTP menawarkan titik akhir calon; semak sama ada calon membenarkan terowong yang diminta.
- Hantar CONNECT dengan menamakan authority destinasi, seperti
api.example:443, dan huraikan pengepala respons lengkap pada pengangkutan mentah. 2xx yang berjaya membuka terowong; penolakan kekal sebagai respons proksi HTTP. - Konfigurasikan nama hos destinasi, SNI yang diperlukan, akar kepercayaan dan pengesahan rakan, kemudian mulakan jabat tangan klien pada
tlsStream. - Selepas TLS berjaya, gunakan bacaan dan tulisan strim SSL untuk aplikasi. Membaca lapisan seterusnya secara langsung pada ketika itu memintas pemprosesan TLS.
Bawa sebarang lebihan penghurai HTTP ke peringkat seterusnya. Asio mempunyai beban lebih jabat tangan yang dibuffer; membuang ekor milik penghurai boleh kehilangan bait yang sudah dibaca daripada soket.
Dengan jenis mudah ini, next_layer dan lowest_layer kedua-duanya mencapai TCP. Lebih banyak pembalut boleh menjadikannya berbeza, jadi pilih antara muka yang membawa protokol wayar sebenar proksi. Proksi HTTPS menambah satu lagi peringkat TLS dan berada di luar urutan CONNECT teks biasa ini.