ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] unable to get local issuer certificateError: unable to verify the first certificateUNABLE_TO_GET_ISSUER_CERT_LOCALLYrequests.exceptions.SSLError ... certificate verify failedLes proxies d'entreprise, certains antivirus et la plupart des équipements d'inspection VPN déchiffrent le HTTPS pour regarder à l'intérieur, puis émettent leur propre certificat. Les systèmes d'exploitation reçoivent cette racine de manière centralisée ; Python, Node et Go embarquent ou utilisent souvent leur propre magasin de confiance et ne la voient jamais. C'est exactement l'écart où curl réussit et votre code échoue.
L'erreur apparaît aussi sans aucun proxy quand la liste de CA intégrée à un environnement est périmée, typiquement sur une vieille image de conteneur ou une VM de longue durée jamais mise à jour.
Ce n'est pas un problème d'authentification. La requête ne termine jamais la négociation TLS, donc aucune clé n'est envoyée et rien n'atteint les journaux du fournisseur.
Regardez qui a signé le certificat que vous recevez réellement :
openssl s_client -connect YOUR_DOMAIN:443 -servername YOUR_DOMAIN </dev/null 2>/dev/null \
| openssl x509 -noout -issuer -subject
Si l'émetteur est une CA publique, le magasin de confiance de votre environnement est périmé. S'il porte le nom de votre entreprise, d'un équipement de sécurité ou d'un éditeur d'antivirus, le trafic est intercepté et vous devez installer cette racine là où votre environnement la cherche.
Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.