സാധാരണ 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 ക്രമത്തിന് പുറത്താണ്.

അനുബന്ധ ലേഖനങ്ങൾ