Izmantojiet atsevišķus TLS kontekstus urllib3 starpniekam un vietnei
Ielādējiet HTTPS starpnieka klienta sertifikātu proxy_ssl_context, atstājot galamērķa uzticēšanos un jebkuru galamērķa klienta identitāti 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')Izmantojiet faktiski apstiprinātos failus. proxy-roots.pem pārbauda starpnieku; proxy-client.pem un tam atbilstošā privātā atslēga identificē šo klientu šim starpniekam. origin_tls saglabā atsevišķu galamērķa uzticēšanās politiku.
Starpnieka URL https shēma ir būtiska šai pirmajai TLS apmaiņai. HTTPS mērķim urllib3 pēc tam sūta CONNECT ārējā TLS sesijā un veic vietnes TLS caur tuneli.
Ja vietne arī pieprasa klienta sertifikātu, ievietojiet to origin_tls. Starpnieka identitātes atkārtota izmantošana tur autentificētu citu savienojumu.
Parastam HTTP starpniekam, kas pārvadā HTTPS, nav ārējas TLS rokasspiediena. Papildu HTTP 407 arī ir atsevišķs: klienta sertifikāta nodrošināšana nesniedz lietotājvārda/paroles akreditācijas datus.