Dùng ngữ cảnh TLS riêng cho proxy và trang web của urllib3
Nạp chứng chỉ máy khách của proxy HTTPS vào proxy_ssl_context, để lại sự tin cậy của đích và mọi danh tính máy khách của đích trên 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')Hãy dùng các tệp thực sự đã được phê duyệt. proxy-roots.pem xác minh trung gian; proxy-client.pem và khóa riêng tương ứng nhận diện máy khách này với trung gian đó. origin_tls giữ chính sách tin cậy riêng của đích.
Lược đồ https của URL proxy là thiết yếu cho trao đổi TLS đầu tiên đó. Với đích HTTPS, urllib3 sau đó gửi CONNECT bên trong phiên TLS bên ngoài và thực hiện TLS của trang web qua đường hầm.
Nếu trang web cũng yêu cầu chứng chỉ máy khách, hãy đặt nó trên origin_tls. Dùng lại danh tính proxy ở đó sẽ xác thực một kết nối khác.
Proxy HTTP thông thường mang HTTPS không có bắt tay TLS bên ngoài. HTTP 407 bổ sung cũng tách biệt: việc cung cấp chứng chỉ máy khách không cung cấp thông tin đăng nhập tên người dùng/mật khẩu.