Asio TLS ஹேண்ட்ஷேக்கைத் தொடங்கும் முன் CONNECT ஐ நிறுவுங்கள்
சாதாரண HTTP ப்ராக்ஸி பரிமாற்றத்திற்கு Asio SSL ஸ்ட்ரீமின் கீழ் அடுக்கைப் பயன்படுத்தி, பின்னர் ஏற்கப்பட்ட டன்னல் வழியாக TLS ஐத் தொடங்குங்கள்.
சாதாரண HTTP ப்ராக்ஸி வழியாக ssl::stream<tcp::socket> க்கு முதலில் அதன் மூல போக்குவரத்தைப் பயன்படுத்தி, பின்னர் அதை இலக்கு TLS செய்யச் சொல்லுங்கள்:
auto& transport = tlsStream.next_layer();
- அந்தப் போக்குவரத்தை ப்ராக்ஸி ஹோஸ்ட் மற்றும் போர்ட்டுடன் இணைக்கவும். அனுமதிக்கப்பட்ட பொது HTTPS இலக்குக்கு ப்ராக்ஸி நற்சான்றுகள் அமைக்கப்படாதபோது, HTTP ப்ராக்ஸி பட்டியல் வேட்பாளர் முனைகளை வழங்குகிறது; வேட்பாளர் கோரப்பட்ட டன்னலை அனுமதிக்கிறதா எனச் சரிபார்க்கவும்.
- இலக்கின் authority ஐக் குறிப்பிட்டு CONNECT அனுப்பி, எடுத்துக்காட்டாக
api.example:443, மேலும் எளிய போக்குவரத்தில் முழு பதில் தலைப்புகளையும் பகுப்பாய்வு செய்யவும். வெற்றிகரமான 2xx டன்னலைத் திறக்கிறது; மறுப்பு HTTP ப்ராக்ஸி பதிலாகவே இருக்கும். - இலக்கு ஹோஸ்ட்பெயர், தேவையான SNI, நம்பகமான வேர்கள் மற்றும் peer சரிபார்ப்பை அமைத்து, பின்னர்
tlsStreamஇல் கிளையண்ட் ஹேண்ட்ஷேக்கைத் தொடங்கவும். - TLS வெற்றியடைந்த பிறகு, பயன்பாட்டிற்கு SSL ஸ்ட்ரீம் வழியாக படித்தல் மற்றும் எழுதுதலைப் பயன்படுத்தவும். அந்த நேரத்தில் கீழ் அடுக்கை நேரடியாகப் படிப்பது TLS செயலாக்கத்தைத் தவிர்க்கிறது.
HTTP பார்சரின் எஞ்சிய பகுதியை அடுத்த கட்டத்திற்குக் கொண்டு செல்லுங்கள். Asio இல் இடையக ஹேண்ட்ஷேக் ஓவர்லோடுகள் உள்ளன; பார்சருக்குச் சொந்தமான வாலை வீசினால் சாக்கெட்டிலிருந்து ஏற்கனவே படித்த பைட்டுகள் இழக்கப்படலாம்.
இந்த எளிய வகையில் next_layer மற்றும் lowest_layer இரண்டும் TCP ஐ அடைகின்றன. அதிக ரேப்பர்கள் அவற்றை வேறுபடுத்தலாம், எனவே ப்ராக்ஸியின் உண்மையான கம்பி நெறிமுறையைச் சுமக்கும் இடைமுகத்தைத் தேர்ந்தெடுக்கவும். HTTPS ப்ராக்ஸி மற்றொரு TLS கட்டத்தைச் சேர்க்கிறது மற்றும் இந்த plaintext CONNECT வரிசைக்கு வெளியே உள்ளது.