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.

Saistītie raksti