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')

Benotz déi tatsächlech guttgeheescht Dateien. proxy-roots.pem iwwerpréift den Tëschemann; proxy-client.pem an de passenden private Schlëssel identifizéieren dëse Client géintiwwer deem Tëschemann. origin_tls hält déi getrennt Vertrauenspolitik vum Zil.

D https-Schema vun der Proxy-URL ass wesentlech fir deen éischt TLS-Austausch. Fir en HTTPS-Zil schéckt urllib3 dann CONNECT bannent der baussenzeger TLS-Sessioun a mécht d Websäit-TLS duerch den Tunnel.

Wann d Websäit och e Clientzertifikat verlaangt, setzt et op origin_tls. D Proxy-Identitéit do erëm ze benotzen géif eng aner Verbindung authentifizéieren.

En normale HTTP-Proxy, deen HTTPS dréit, huet keen baussenzege TLS-Handshake. En zousätzlechen HTTP 407 ass och separat: e Clientzertifikat ze bidden gëtt keng Benotzernumm/Passwuert-Umeldungsdaten.

Ähnlech Artikelen