Օգտագործեք առանձին TLS կոնտեքստեր urllib3-ի պրոքսիի և կայքի համար
Բեռնեք HTTPS պրոքսիի հաճախորդի վկայագիրը proxy_ssl_context-ում՝ թողնելով նպատակակետի վստահությունը և ցանկացած նպատակակետային հաճախորդի ինքնությունը 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')Օգտագործեք փաստացի հաստատված ֆայլերը։ proxy-roots.pem-ը ստուգում է միջնորդին؛ proxy-client.pem-ը և դրա համապատասխան մասնավոր բանալին նույնականացնում են այս հաճախորդին այդ միջնորդի առջև։ origin_tls-ը պահպանում է նպատակակետի առանձին վստահության քաղաքականությունը։
Պրոքսիի URL-ի https սխեման էական է այդ առաջին TLS փոխանակման համար։ HTTPS թիրախի համար urllib3-ը այնուհետև CONNECT է ուղարկում արտաքին TLS սեսիայի ներսում և կայքի TLS-ը կատարում թունելի միջով։
Եթե կայքը նույնպես պահանջում է հաճախորդի վկայագիր, տեղադրեք այն origin_tls-ում։ Այնտեղ պրոքսիի ինքնության կրկնակի օգտագործումը կհաստատեր այլ միացում։
HTTPS կրող սովորական HTTP պրոքսին արտաքին TLS ձեռքսեղմում չունի։ Լրացուցիչ HTTP 407-ը նույնպես առանձին է. հաճախորդի վկայագիր տրամադրելը չի տալիս օգտանվան/գաղտնաբառի հավատարմագրեր։