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

संबंधित लेख