Python Requests: CA-pakker hører i verify, ikke i cert
Læg godkendt CA-tillidsmateriale i verifikationskonfigurationen i stedet for at behandle en certifikatfejl som en anmodning om klientens private nøgle.
En kollega giver dig organisationens CA-certifikat. Requests tilbyder en parameter kaldet cert. Navnene ser ud som et match, men de besvarer forskellige spørgsmål.
| Indstilling | Formål |
|---|---|
verify | Vælger det tillidsmateriale, der bruges til at verificere modparten |
cert | Præsenterer et klientcertifikat med dets private nøgle, når klientgodkendelse kræves |
For en godkendt aflytnings-CA kan en Requests-handling vælge den tilsigtede CA-pakke:
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)Her er routes applikationens eksisterende proxy-mapping. Stien skal navngive den korrekte læsbare tillidspakke for denne klient. Det er ikke et downloadet websteds-certifikat, der vælges blot fordi forbindelsen mislykkedes.
Miljøvariablen REQUESTS_CA_BUNDLE er endnu et understøttet tillidsinput. Kontroller den faktiske sendeststi, hvis den virker ineffektiv; arbejdsgange med forberedte anmodninger og eksplicitte indstillinger kan ændre, hvordan miljøkonfiguration flettes.
Du bør ikke have brug for CA'ens private nøgle
Det offentlige CA-certifikat er det, en klient har brug for for at genkende en godkendt udsteder. Dens signeringsprivate nøgle er en anden parts stærke hemmelighed. Den bør ikke distribueres til applikationsbrugere som en del af en rutinemæssig proxy-tillidsreparation.
Et klientcertifikat kan stadig kræves af en bestemt destination eller af en anden separat konfigureret TLS-forbindelse. Det er et separat krav, ikke noget, der udledes af enhver certifikatverifikationsfejl.
Når den næste fejl vises, navngiv handlingen: indlæsning af en CA-fil, verifikation af et modpartscertifikat eller præsentation af en klientidentitet. At flytte en fil mellem verify og cert, indtil meddelelsen ændres, er ikke en pålidelig måde at vælge dens rolle.