Энгийн HTTP проксигоор ssl::stream<tcp::socket>-г ашиглахдаа очих газарт TLS хийхийг хүсэхээс өмнө түүний түүхий тээврийг ашиглана:

auto& transport = tlsStream.next_layer();
  1. Тухайн тээврийг прокси хост, порттой холбоно. Прокси нэвтрэх мэдээлэл тохируулаагүй, зөвшөөрөгдсөн нийтийн HTTPS очих газрын хувьд HTTP прокси жагсаалт нэр дэвшигч төгсгөлийн цэгүүдийг санал болгодог; нэр дэвшигч хүссэн туннелийг зөвшөөрч байгаа эсэхийг шалгана.
  2. Очих газрын authority-г зааж CONNECT илгээх, жишээ нь api.example:443, мөн түүхий тээвр дээр бүрэн хариултын толгойг шинжлэх. Амжилттай 2xx туннелийг нээдэг; татгалзал нь HTTP прокси хариулт хэвээр үлддэг.
  3. Очих газрын хост нэр, шаардлагатай SNI, итгэлийн үндэс, хамтрагчийн баталгаажуулалтыг тохируулаад, дараа нь tlsStream дээр клиентийн гар барилтыг эхлүүлнэ.
  4. TLS амжилттай болсны дараа програмын хувьд SSL урсгалын уншилт, бичлэгийг ашиглана. Тэр мөчид дараагийн давхаргыг шууд унших нь TLS боловсруулалтыг тойрдог.

HTTP задлагчийн илүүдлийг дараагийн шатанд шилжүүлнэ. Asio-д буферлэсэн гар барилтын хэт ачаалал бий; задлагчийн эзэмшлийн сүүлийг хаях нь сокетоос аль хэдийн уншсан байтуудыг алдаж болно.

Энэ энгийн төрлөөр next_layer болон lowest_layer хоёулаа TCP-д хүрдэг. Илүү олон бүрхүүл тэдгээрийг ялгаатай болгож болох тул проксийн бодит утсан протоколыг тээж буй интерфэйсийг сонгоно. HTTPS прокси өөр нэг TLS шатыг нэмдэг бөгөөд энэ тодорхой текстэн CONNECT дарааллаас гадна байдаг.

Холбоотой нийтлэлүүд