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

Brug de faktisk godkendte filer. proxy-roots.pem verificerer mellemleddet; proxy-client.pem og dens matchende private nøgle identificerer denne klient over for dette mellemled. origin_tls bevarer destinationens separate tillidspolitik.

Proxy-URLens https-skema er afgørende for den første TLS-udveksling. For et HTTPS-mål sender urllib3 derefter CONNECT inde i den ydre TLS-session og udfører webstedets TLS gennem tunnelen.

Hvis webstedet også kræver et klientcertifikat, skal du lægge det på origin_tls. Genbrug af proxyidentiteten der ville autentificere en anden forbindelse.

En almindelig HTTP-proxy, der transporterer HTTPS, har ingen ydre TLS-håndtryk. Et ekstra HTTP 407 er også separat: et klientcertifikat giver ikke brugernavn/adgangskode-oplysninger.

Relaterede artikler