PycURL에서 프록시와 원본 CA 번들을 별도로 설정
중간자로 가는 TLS에는 https 프록시 URL을 사용하고, 해당 상대에는 PROXY_CAINFO, 목적지에는 CAINFO를 지정합니다.
from io import BytesIO
import pycurl
body = BytesIO()
curl = pycurl.Curl()
try:
curl.setopt(pycurl.URL, "https://api.example/")
curl.setopt(pycurl.PROXY, "https://proxy.example:8443")
curl.setopt(pycurl.PROXY_CAINFO, "/path/to/proxy-ca.pem")
curl.setopt(pycurl.CAINFO, "/path/to/origin-ca.pem")
curl.setopt(pycurl.CONNECTTIMEOUT, 5)
curl.setopt(pycurl.TIMEOUT, 30)
curl.setopt(pycurl.WRITEDATA, body)
curl.perform()
finally:
curl.close()HTTPS 프록시를 지원하는 PycURL/libcurl 빌드를 사용하십시오. 번들 경로는 의도한 신뢰 집합을 나타냅니다. PROXY_CAINFO은 중간자를 검증하고 CAINFO는 목적지의 TLS를 검증합니다. 기존 신뢰가 해당 연결을 이미 포함한다면 명시적 재정의를 생략하십시오.
PROXY의 URL은 그 리스너를 설명합니다. 숫자로 PROXYTYPE를 추측할 필요는 없습니다. 일반 HTTP 리스너라면 목적지가 HTTPS여도 URL은 http://로 유지됩니다. 이 경우 HTTP 프록시 목록이 엔드포인트 후보를 제공하며, 프록시 TLS 번들은 리스너가 실제로 TLS를 사용할 때만 적용됩니다.
필요할 때 PROXYUSERNAME과 PROXYPASSWORD로 프록시 계정을 제공하십시오. 인증서 검증은 유지하십시오. 프록시 검증을 끄면 누락된 인증 기관을 설치하는 대신 중간자의 신원 확인이 사라집니다.