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 နှင့် ၎င်းနှင့် ကိုက်ညီသော သီးသန့်သော့သည် ဤ client ကို ထိုကြားခံထံ အထောက်အထားပြသည်။ origin_tls သည် ဦးတည်ရာ၏ သီးခြား ယုံကြည်မှုမူဝါဒကို ထိန်းသိမ်းသည်။

proxy URL ၏ https အစီအစဉ်သည် ထို ပထမ TLS ဖလှယ်မှု အတွက် မရှိမဖြစ် လိုအပ်သည်။ HTTPS ပစ်မှတ်အတွက် urllib3 သည် ပြင်ပ TLS session အတွင်း CONNECT ကို ပို့ပြီး ဥမင်လိုဏ်ခေါင်းမှတစ်ဆင့် ဝဘ်ဆိုက် TLS ကို ဆောင်ရွက်သည်။

ဝဘ်ဆိုက်ကလည်း client လက်မှတ် လိုအပ်ပါက ၎င်းကို origin_tls တွင် ထားပါ။ ထိုနေရာတွင် proxy အထောက်အထားကို ပြန်လည်အသုံးပြုခြင်းသည် အခြား ချိတ်ဆက်မှုကို အတည်ပြုပေးမည်။

HTTPS ကို သယ်ဆောင်သော သာမန် HTTP proxy တွင် ပြင်ပ TLS လက်ဆွဲနှုတ်ဆက်မှု မရှိပါ။ ထပ်ဆောင်း HTTP 407 သည်လည်း သီးခြားဖြစ်သည်။ client လက်မှတ် ပေးခြင်းသည် အသုံးပြုသူအမည်/စကားဝှက် အထောက်အထားများကို မပေးပါ။

ဆက်စပ်ဆောင်းပါးများ