Külön TLS-kontextusok az urllib3 proxyhez és webhelyhez
Töltse be a HTTPS-proxy kliens-tanúsítványát a proxy_ssl_contextbe, hagyva a cél bizalmát és bármilyen cél-kliensidentitást az ssl_contextben.
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')A ténylegesen jóváhagyott fájlokat használja. A proxy-roots.pem ellenőrzi a közvetítőt; a proxy-client.pem és a hozzá tartozó privát kulcs azonosítja ezt a klienst a közvetítő felé. A origin_tls megtartja a cél külön bizalmi szabályzatát.
A proxy URL https sémája elengedhetetlen ehhez a első TLS-cseréhez. HTTPS-cél esetén az urllib3 ezután CONNECT-et küld a külső TLS-munkameneten belül, és az alagúton keresztül végzi a webhely TLS-ét.
Ha a webhely is kliens-tanúsítványt kér, tegye azt a origin_tls-re. A proxy identitásának ottani újrafelhasználása más kapcsolatot hitelesítene.
A HTTPS-t szállító hétköznapi HTTP-proxynak nincs külső TLS-kézfogása. Egy további HTTP 407 szintén különálló: a kliens-tanúsítvány megadása nem biztosít felhasználónév/jelszó hitelesítő adatokat.