Жөнөкөй 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 ырааттуулугунан тышкары турат.

Тектеш макалалар