urllib3 کے پراکسی اور ویب سائٹ کے لیے الگ TLS سیاق استعمال کریں
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 منزل کی الگ اعتماد پالیسی برقرار رکھتا ہے۔
پراکسی URL کی https اسکیم اس پہلے TLS تبادلے کے لیے ضروری ہے۔ HTTPS ہدف کے لیے، urllib3 پھر بیرونی TLS سیشن کے اندر CONNECT بھیجتا ہے اور سرنگ کے ذریعے ویب سائٹ TLS کرتا ہے۔
اگر ویب سائٹ کو بھی کلائنٹ سرٹیفکیٹ درکار ہو تو اسے origin_tls پر رکھیں۔ وہاں پراکسی شناخت دوبارہ استعمال کرنے سے کسی مختلف کنکشن کی تصدیق ہوگی۔
HTTPS اٹھانے والے عام HTTP پراکسی میں کوئی بیرونی TLS مصافحہ نہیں ہوتا۔ اضافی HTTP 407 بھی الگ ہے: کلائنٹ سرٹیفکیٹ دینا صارف نام/پاس ورڈ کی اسناد فراہم نہیں کرتا۔