urllib3 ના પ્રોક્સી અને વેબસાઇટ માટે અલગ TLS સંદર્ભો વાપરો
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 પછી બાહ્ય TLS સત્રની અંદર CONNECT મોકલે છે અને ટનલ દ્વારા વેબસાઇટ TLS કરે છે.
જો વેબસાઇટને પણ ક્લાયન્ટ પ્રમાણપત્રની જરૂર હોય, તો તેને origin_tls પર મૂકો. ત્યાં પ્રોક્સી ઓળખ ફરી વાપરવાથી બીજા જોડાણને પ્રમાણિત કરાયું હોત.
HTTPS વહન કરતા સામાન્ય HTTP પ્રોક્સીમાં બાહ્ય TLS હેન્ડશેક નથી. વધારાનું HTTP 407 પણ અલગ છે: ક્લાયન્ટ પ્રમાણપત્ર આપવાથી વપરાશકર્તાનામ/પાસવર્ડ ઓળખપત્રો મળતાં નથી.