Oddiy HTTP proksi orqali ssl::stream<tcp::socket> uchun avval uning xom transportidan foydalaning, keyin undan manzil TLSini bajarishni soʻrang:

auto& transport = tlsStream.next_layer();
  1. Bu transportni proksi hosti va portiga ulang. Ruxsat etilgan ommaviy HTTPS manzili uchun proksi hisob maʼlumotlari sozlanmagan boʻlsa, HTTP proksilar roʻyxati nomzod oxirgi nuqtalarni taklif qiladi; nomzod soʻralgan tunnelga ruxsat berishini tekshiring.
  2. Manzil authoritysini koʻrsatib CONNECT yuboring, masalan api.example:443, va oddiy transportda javob sarlavhalarini toʻliq tahlil qiling. Muvaffaqiyatli 2xx tunnelni ochadi; rad etish HTTP proksi javobi boʻlib qoladi.
  3. Manzil host nomini, kerakli SNIni, ishonch ildizlarini va peer tekshiruvini sozlang, soʻngra tlsStream da mijoz qoʻl berishini boshlang.
  4. TLS muvaffaqiyatli boʻlgach, ilova uchun SSL oqimi orqali oʻqish va yozishdan foydalaning. Oʻsha paytda pastki qatlamni toʻgʻridan-toʻgʻri oʻqish TLS ishlovini chetlab oʻtadi.

HTTP tahlilchisining qolgan qismini keyingi bosqichga olib oʻting. Asio da buferli qoʻl berish ortiqcha yuklamalari bor; tahlilchiga tegishli dumini tashlash soketdan allaqachon oʻqilgan baytlarni yoʻqotishi mumkin.

Bu oddiy turda next_layer va lowest_layer ikkalasi ham TCPga yetadi. Koʻproq oʻramlar ularni farqlashi mumkin, shuning uchun proksining haqiqiy sim protokolini olib yuruvchi interfeysni tanlang. HTTPS proksi yana bir TLS bosqichini qoʻshadi va bu ochiq matnli CONNECT ketma-ketligidan tashqarida.

O'xshash maqolalar