සාමාන්‍ය HTTP proxy එකක් හරහා ssl::stream<tcp::socket> සඳහා පළමුව එහි අමු ප්‍රවාහනය භාවිත කර, පසුව එයට ගමනාන්ත TLS ඉටු කරන ලෙස කියන්න:

auto& transport = tlsStream.next_layer();
  1. එම ප්‍රවාහනය proxy host සහ port වෙත සම්බන්ධ කරන්න. අවසර ලත් පොදු HTTPS ගමනාන්තයක් සඳහා proxy අක්තපත්‍ර වින්‍යාස කර නොමැති විට, HTTP proxy ලැයිස්තුව අපේක්ෂක endpoints ලබා දෙයි; අපේක්ෂකයා ඉල්ලා සිටින tunnel ට ඉඩ දෙන්නේ දැයි පරීක්ෂා කරන්න.
  2. ගමනාන්තයේ authority සඳහන් කරමින් CONNECT යවන්න, උදාහරණයක් ලෙස api.example:443, සහ සරල ප්‍රවාහනය මත සම්පූර්ණ ප්‍රතිචාර ශීර්ෂ විශ්ලේෂණය කරන්න. සාර්ථක 2xx එකක් tunnel විවෘත කරයි; ප්‍රතික්ෂේපය HTTP proxy ප්‍රතිචාරයක් ලෙසම රැඳේ.
  3. ගමනාන්ත hostname, අවශ්‍ය SNI, විශ්වාස මූල සහ peer සත්‍යාපනය වින්‍යාස කර, පසුව tlsStream මත සේවාලාභී handshake ආරම්භ කරන්න.
  4. TLS සාර්ථක වූ පසු යෙදුම සඳහා SSL stream හරහා කියවීම සහ ලිවීම භාවිත කරන්න. එම අවස්ථාවේ පහළ ස්ථරය කෙලින්ම කියවීම TLS සැකසීම මඟ හරියි.

HTTP parser හි ඉතිරි කොටස ඊළඟ අදියරට ගෙන යන්න. Asio හි buffer සහිත handshake overloads ඇත; parser සතු වලිගය ඉවත දැමීමෙන් socket එකෙන් දැනටමත් කියවා ඇති බයිට් අහිමි විය හැක.

මෙම සරල වර්ගයේ next_layer සහ lowest_layer දෙකම TCP වෙත ළඟා වේ. වැඩි wrappers ඒවා වෙනස් කළ හැක, එබැවින් proxy හි සැබෑ wire protocol ගෙන යන interface තෝරන්න. HTTPS proxy තවත් TLS අදියරක් එකතු කරන අතර මෙම plaintext CONNECT අනුක්‍රමයෙන් පිටතය.

අදාළ ලිපි