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, વિશ્વાસ મૂળ અને સહભાગી ચકાસણી ગોઠવો, પછી
tlsStreamપર ક્લાયન્ટ હેન્ડશેક શરૂ કરો. - TLS સફળ થયા પછી, એપ્લિકેશન માટે SSL સ્ટ્રીમ વાંચન અને લેખન વાપરો. તે સમયે આગલું સ્તર સીધું વાંચવું TLS પ્રક્રિયાને ટાળે છે.
HTTP પાર્સરનો કોઈપણ વધારો આગલા તબક્કે લઈ જાઓ. Asio પાસે બફર કરેલા હેન્ડશેક ઓવરલોડ છે; પાર્સરની માલિકીની પૂંછડી ફેંકી દેવાથી સોકેટમાંથી પહેલેથી વાંચેલા બાઇટ ખોવાઈ શકે છે.
આ સરળ પ્રકાર સાથે next_layer અને lowest_layer બંને TCP સુધી પહોંચે છે. વધુ રેપર તેમને અલગ કરી શકે છે, તેથી પ્રોક્સીનો વાસ્તવિક વાયર પ્રોટોકોલ ધરાવતું ઇન્ટરફેસ પસંદ કરો. HTTPS પ્રોક્સી બીજું TLS તબક્કો ઉમેરે છે અને આ સ્પષ્ટ-ટેક્સ્ટ CONNECT ક્રમની બહાર છે.