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 ഉം വേർതിരിച്ചതാണ്: ക്ലയന്റ് സർട്ടിഫിക്കറ്റ് നൽകുന്നത് ഉപയോക്തൃനാമം/പാസ്വേഡ് ക്രെഡൻഷ്യലുകൾ നൽകുന്നില്ല.

അനുബന്ധ ലേഖനങ്ങൾ