ჩვეულებრივი HTTP პროქსის მეშვეობით ssl::stream<tcp::socket>-ისთვის გამოიყენეთ მისი ნედლი ტრანსპორტი, სანამ დანიშნულებისკენ TLS-ს მოსთხოვთ:

auto& transport = tlsStream.next_layer();
  1. დააკავშირეთ ეს ტრანსპორტი პროქსის ჰოსტსა და პორტთან. დაშვებული საჯარო HTTPS დანიშნულებისთვის, სადაც პროქსის სამოწმებელი მონაცემები არ არის კონფიგურირებული, HTTP პროქსების სია გთავაზობთ კანდიდატ საბოლოო წერტილებს; შეამოწმეთ, რომ კანდიდატი ნებას რთავს მოთხოვნილ გვირაბს.
  2. გაგზავნეთ CONNECT დანიშნულების authority-ს მითითებით, მაგალითად api.example:443, და გააანალიზეთ სრული პასუხის სათაურები ნედლ ტრანსპორტზე. წარმატებული 2xx ხსნის გვირაბს; უარი რჩება HTTP პროქსის პასუხად.
  3. კონფიგურაცია გაუკეთეთ დანიშნულების ჰოსტის სახელს, საჭირო SNI-ს, ნდობის ფესვებსა და თანამოლაპარაკის შემოწმებას, შემდეგ დაიწყეთ კლიენტის ხელის ჩამორთმევა tlsStream-ზე.
  4. TLS-ის წარმატების შემდეგ გამოიყენეთ SSL ნაკადის წაკითხვა და ჩაწერა აპლიკაციისთვის. შემდეგი ფენის უშუალოდ წაკითხვა ამ მომენტში გვერდს უვლის TLS დამუშავებას.

HTTP პარსერის ნებისმიერი ნაშთი გადაიტანეთ შემდეგ ეტაპზე. Asio-ს აქვს ბუფერული ხელის ჩამორთმევის გადატვირთვები; პარსერის კუთვნილი კუდის გადაგდებამ შეიძლება დაკარგოს სოკეტიდან უკვე წაკითხული ბაიტები.

ამ მარტივი ტიპით next_layer და lowest_layer ორივე აღწევს TCP-ს. მეტი გარსი შეიძლება მათ განასხვავოს, ამიტომ აირჩიეთ ის ინტერფეისი, რომელიც ატარებს პროქსის რეალურ მავთულის პროტოკოლს. HTTPS პროქსი ამატებს კიდევ ერთ TLS ეტაპს და ამ ღია ტექსტური CONNECT მიმდევრობის გარეთაა.

დაკავშირებული სტატიები