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 ಕೂಡ ಪ್ರತ್ಯೇಕ: ಕ್ಲೈಂಟ್ ಪ್ರಮಾಣಪತ್ರ ನೀಡುವುದು ಬಳಕೆದಾರಹೆಸರು/ಪಾಸ್ವರ್ಡ್ ರುಜುವಾತುಗಳನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.