Python Requests: CA-bundels horen in verify, niet in cert
Plaats goedgekeurd CA-vertrouwensmateriaal in de verificatieconfiguratie in plaats van een certificaatfout te behandelen als een verzoek om de privésleutel van de client.
Een collega geeft je het CA-certificaat van de organisatie. Requests biedt een parameter met de naam cert. De namen lijken bij elkaar te passen, maar ze beantwoorden verschillende vragen.
| Instelling | Doel |
|---|---|
verify | Selecteert het vertrouwensmateriaal dat wordt gebruikt om de tegenpartij te verifiëren |
cert | Presenteert een clientcertificaat met de bijbehorende privésleutel wanneer clientauthenticatie nodig is |
Voor een goedgekeurde interceptie-CA kan een Requests-bewerking de bedoelde CA-bundel selecteren:
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)Hier is routes de bestaande proxy-toewijzing van de applicatie. Het pad moet de juiste leesbare vertrouwensbundel voor deze client noemen. Het is geen gedownload websitecertificaat dat alleen is gekozen omdat de verbinding mislukte.
De omgevingsvariabele REQUESTS_CA_BUNDLE is een andere ondersteunde vertrouwensbron. Controleer het werkelijke verzendpad als het niet effectief lijkt; workflows met voorbereide verzoeken en expliciete instellingen kunnen veranderen hoe de omgevingsconfiguratie wordt samengevoegd.
Je zou de privésleutel van de CA niet nodig moeten hebben
Het openbare CA-certificaat is wat een client nodig heeft om een goedgekeurde uitgever te herkennen. De bijbehorende privésleutel voor ondertekening is een machtig geheim van een andere partij. Die mag niet als onderdeel van een routineuze proxy-vertrouwensreparatie aan applicatiegebruikers worden verspreid.
Een clientcertificaat kan nog steeds vereist zijn door een specifieke bestemming of door een andere afzonderlijk geconfigureerde TLS-relatie. Dat is een aparte vereiste, niet iets dat uit elke certificaatverificatiefout wordt afgeleid.
Wanneer de volgende fout verschijnt, benoem de bewerking: een CA-bestand laden, een certificaat van de tegenpartij verifiëren of een clientidentiteit presenteren. Een bestand tussen verify en cert verplaatsen totdat het bericht verandert is geen betrouwbare manier om de rol ervan te kiezen.