أنشئ CONNECT قبل بدء مصافحة Asio TLS
استخدم الطبقة التالية من تدفق Asio SSL لتبادل HTTP العادي عبر الوكيل، ثم ابدأ TLS عبر النفق المقبول.
مع ssl::stream<tcp::socket> عبر وكيل HTTP عادي، استخدم ناقله الخام قبل أن تطلب منه إجراء TLS للوجهة:
auto& transport = tlsStream.next_layer();- اربط ذلك الناقل بمضيف الوكيل ومنفذه. بالنسبة لوجهة HTTPS عامة مسموح بها دون بيانات اعتماد وكيل مُعدّة، تقدّم قائمة وكلاء HTTP نقاط نهاية مرشحة؛ تحقق من أن المرشح يسمح بالنفق المطلوب.
- أرسل CONNECT باسم سلطة الوجهة، مثل
api.example:443، وحلّل ترويسات الاستجابة الكاملة على الناقل الخام. نجاح بترميز 2xx يفتح النفق؛ أما الرفض فيبقى استجابة وكيل HTTP. - اضبط اسم مضيف الوجهة وSNI المطلوب وجذور الثقة والتحقق من النظير، ثم ابدأ مصافحة العميل على
tlsStream. - بعد نجاح TLS، استخدم قراءات وكتابات تدفق SSL للتطبيق. قراءة الطبقة التالية مباشرة عند تلك النقطة تتجاوز معالجة TLS.
انقل أي فائض من محلل HTTP إلى المرحلة التالية. لدى Asio تحميلات زائدة للمصافحة المخزّنة مؤقتًا؛ وقد يؤدي التخلص من ذيل يملكه المحلل إلى فقدان بايتات قُرئت بالفعل من المقبس.
مع هذا النوع البسيط، يصل كل من next_layer وlowest_layer إلى TCP. يمكن لمزيد من الأغلفة أن تجعلهما مختلفين، لذا اختر الواجهة التي تحمل بروتوكول الوكيل الفعلي. يضيف وكيل HTTPS طبقة TLS أخرى ويقع خارج تسلسل CONNECT النصي هذا.