सामान्य 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 क्रम से बाहर है।

संबंधित लेख