Воспоставете CONNECT пред започнување на Asio TLS ракувањето
Користете го следниот слој на Asio SSL текот за обичната HTTP прокси размена, потоа започнете TLS низ прифатениот тунел.
За ssl::stream<tcp::socket> низ обичен HTTP прокси, користете го неговиот суров транспорт пред да го замолите да изврши TLS кон дестинацијата:
auto& transport = tlsStream.next_layer();- Поврзете го тој транспорт со хостот и портата на проксито. За дозволена јавна HTTPS дестинација без поставени прокси податоци за најава, списокот на HTTP прокси нуди кандидат-крајни точки; проверете дали кандидатот го дозволува бараниот тунел.
- Испратете CONNECT со authority на дестинацијата, на пример
api.example:443, и анализирајте ги целите заглавија на одговорот на суровиот транспорт. Успешен 2xx го отвора тунелот; одбивањето останува одговор на HTTP прокси. - Конфигурирајте го името на хостот на дестинацијата, потребниот SNI, доверените корени и проверката на партнерот, потоа започнете го ракувањето на клиентот на
tlsStream. - Откако TLS ќе успее, користете читање и пишување на SSL текот за апликацијата. Директното читање на следниот слој во тој момент ја заобиколува TLS обработката.
Префрлете го секој вишок од HTTP парсерот во следната фаза. Asio има преоптоварувања за баферирано ракување; отфрлањето на опашката што ја поседува парсерот може да изгуби бајти веќе прочитани од сокетот.
Со овој едноставен тип, и next_layer и lowest_layer стигнуваат до TCP. Повеќе обвивки можат да ги направат различни, затоа изберете го интерфејсот што го носи вистинскиот жичен протокол на проксито. HTTPS проксито додава уште една TLS фаза и е надвор од оваа низа CONNECT во чист текст.