استخدم سياقات TLS منفصلة لوكيل urllib3 والموقع
حمّل شهادة عميل الوكيل HTTPS في proxy_ssl_context، واترك ثقة الوجهة وأي هوية عميل للوجهة على ssl_context.
import ssl
import urllib3
proxy_tls = ssl.create_default_context(cafile='proxy-roots.pem')
proxy_tls.load_cert_chain('proxy-client.pem', 'proxy-client.key')
origin_tls = ssl.create_default_context()
with urllib3.ProxyManager(
'https://proxy.example:8443',
proxy_ssl_context=proxy_tls,
ssl_context=origin_tls,
timeout=urllib3.Timeout(connect=5, read=15),
) as http:
response = http.request('GET', 'https://service.example/data')استخدم الملفات المعتمدة الفعلية. يتحقق proxy-roots.pem من الوسيط؛ ويعرّف proxy-client.pem ومفتاحه الخاص المطابق هذا العميل لدى ذلك الوسيط. يحتفظ origin_tls بسياسة الثقة المنفصلة للوجهة.
مخطط https في عنوان الوكيل ضروري لذلك التبادل الأول لـ TLS. بالنسبة لهدف HTTPS، يرسل urllib3 بعد ذلك CONNECT داخل جلسة TLS الخارجية وينفّذ TLS الموقع عبر النفق.
إذا كان الموقع يتطلب أيضًا شهادة عميل، فضعها على origin_tls. إن إعادة استخدام هوية الوكيل هناك ستوثّق اتصالًا مختلفًا.
الوكيل HTTP العادي الذي يحمل HTTPS ليس لديه مصافحة TLS خارجية. كما أن 407 الإضافي منفصل: تقديم شهادة عميل لا يوفّر بيانات اعتماد اسم المستخدم/كلمة المرور.