Python Requests: CA-Bundles gehören in verify, nicht in cert
Legen Sie zugelassenes CA-Vertrauensmaterial in die Verifikationskonfiguration, statt einen Zertifikatfehler als Aufforderung zur privaten Schlüssel des Clients zu deuten.
Ein Kollege gibt Ihnen das CA-Zertifikat der Organisation. Requests bietet einen Parameter namens cert. Die Namen klingen wie ein Paar, beantworten aber unterschiedliche Fragen.
| Einstellung | Zweck |
|---|---|
verify | Wählt das Vertrauensmaterial zur Verifikation der Gegenstelle |
cert | Übermittelt ein Clientzertifikat mit seinem privaten Schlüssel, wenn Client-Authentifizierung erforderlich ist |
Für eine zugelassene Interception-CA kann eine Requests-Operation das vorgesehene CA-Bundle auswählen:
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)Hier ist routes die bestehende Proxy-Zuordnung der Anwendung. Der Pfad muss das korrekte lesbare Vertrauensbundle für diesen Client benennen. Es ist kein heruntergeladenes Website-Zertifikat, das nur ausgewählt wird, weil die Verbindung fehlgeschlagen ist.
Die Umgebungsvariable REQUESTS_CA_BUNDLE ist eine weitere unterstützte Vertrauensquelle. Prüfen Sie den tatsächlichen Sendeweg, wenn sie wirkungslos erscheint; Workflows mit vorbereiteten Anfragen und explizite Einstellungen können ändern, wie die Umgebungskonfiguration zusammengeführt wird.
Sie sollten den privaten Schlüssel der CA nicht benötigen
Das öffentliche CA-Zertifikat benötigt ein Client, um einen zugelassenen Aussteller zu erkennen. Der zugehörige private Signaturschlüssel ist ein starkes Geheimnis einer anderen Partei. Er sollte nicht als Teil einer routinemäßigen Proxy-Vertrauensreparatur an Anwendungsbenutzer verteilt werden.
Ein Clientzertifikat kann dennoch von einem bestimmten Ziel oder einer anderen separat konfigurierten TLS-Beziehung verlangt werden. Das ist eine eigene Anforderung und nicht etwas, das aus jedem Zertifikatsverifikationsfehler abgeleitet wird.
Wenn der nächste Fehler auftritt, benennen Sie den Vorgang: Laden einer CA-Datei, Verifizieren eines Gegenstellen-Zertifikats oder Übermitteln einer Client-Identität. Eine Datei zwischen verify und cert zu verschieben, bis sich die Meldung ändert, ist kein zuverlässiger Weg, ihre Rolle zu wählen.