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

ใช้ไฟล์ที่ได้รับการอนุมัติจริง proxy-roots.pem ตรวจสอบตัวกลาง proxy-client.pem และคีย์ส่วนตัวที่เข้าคู่กันระบุตัวไคลเอนต์นี้ต่อตัวกลางนั้น origin_tls รักษานโยบายความเชื่อถือแยกของปลายทาง

สคีมา https ของ URL พร็อกซีจำเป็นสำหรับการแลกเปลี่ยน TLS ครั้งแรกนั้น สำหรับเป้าหมาย HTTPS urllib3 จะส่ง CONNECT ภายในเซสชัน TLS ชั้นนอกและทำ TLS ของเว็บไซต์ผ่านอุโมงค์

หากเว็บไซต์ต้องการใบรับรองไคลเอนต์ด้วย ให้ใส่ไว้ที่ origin_tls การใช้ตัวตนพร็อกซีซ้ำที่นั่นจะยืนยันการเชื่อมต่ออื่น

พร็อกซี HTTP ทั่วไปที่ขนส่ง HTTPS ไม่มีการจับมือ TLS ชั้นนอก HTTP 407 เพิ่มเติมก็แยกเช่นกัน การให้ใบรับรองไคลเอนต์ไม่ได้ให้ข้อมูลรับรองชื่อผู้ใช้/รหัสผ่าน

บทความที่เกี่ยวข้อง