Proxy- und Origin-CA-Bundles in PycURL getrennt setzen
Verwenden Sie eine https-Proxy-URL für TLS zum Intermediär, mit PROXY_CAINFO für diesen Peer und CAINFO für das Ziel.
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()Verwenden Sie einen PycURL/libcurl-Build, der HTTPS-Proxys unterstützt. Die Bundle-Pfade stehen für die vorgesehenen Trust-Sets: PROXY_CAINFO prüft den Intermediär; CAINFO prüft das TLS des Ziels. Lassen Sie eine ausdrückliche Überschreibung weg, wenn das vorhandene Vertrauen diese Verbindung bereits abdeckt.
Die URL in PROXY beschreibt ihren Listener. Eine numerische PROXYTYPE-Vermutung ist nicht nötig. Bei einem einfachen HTTP-Listener bleibt die URL http://, auch wenn das Ziel HTTPS ist. In diesem Fall liefert die HTTP-Proxy-Liste Endpunkt-Kandidaten; das Proxy-TLS-Bundle gilt nur, wenn der Listener tatsächlich TLS verwendet.
Geben Sie bei Bedarf ein Proxy-Konto über PROXYUSERNAME und PROXYPASSWORD an. Behalten Sie die Zertifikatsprüfung bei: Das Abschalten der Proxy-Prüfung entfernt die Identitätsprüfung des Intermediärs, statt die fehlende Zertifizierungsstelle zu installieren.