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 ਵੀ ਵੱਖਰਾ ਹੈ: ਕਲਾਇੰਟ ਸਰਟੀਫਿਕੇਟ ਦੇਣਾ ਵਰਤੋਂਕਾਰ ਨਾਮ/ਪਾਸਵਰਡ ਪ੍ਰਮਾਣ ਪੱਤਰ ਨਹੀਂ ਦਿੰਦਾ।

ਸੰਬੰਧਿਤ ਲੇਖ