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 देखील वेगळे आहे: क्लायंट प्रमाणपत्र देणे वापरकर्तानाव/पासवर्ड क्रेडेन्शियल देत नाही.