Getrennte TLS-Kontexter fir dem urllib3 säi Proxy a seng Websäit benotzen
Lued de Clientzertifikat vum HTTPS-Proxy an proxy_ssl_context an loosst d Vertraue vum Zil an all Clientidentitéit vum Zil op 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')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.