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 ক্রমের বাইরে থাকে।