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.

Kapcsolódó cikkek