सामान्य 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 क्रमभन्दा बाहिर हुन्छ।

सम्बन्धित लेखहरू