Erreurs SSL avec cURL et PHP

Diagnostiquez et corrigez les problemes SSL dans vos applications PHP.

Les erreurs SSL avec cURL sont parmi les plus frustrantes pour les developpeurs PHP. "SSL certificate problem: unable to get local issuer certificate" est le message classique.

Ces erreurs surviennent souvent apres une migration de serveur, une mise a jour PHP, ou lors de l'integration d'APIs tierces.

Ce guide couvre les causes et solutions pour les erreurs SSL cURL les plus courantes.

Erreurs Courantes

Les messages d'erreur SSL cURL typiques :

Causes Principales

Pourquoi ces erreurs surviennent :

Solutions

Comment resoudre ces erreurs :

  1. Telecharger le bundle CA : recuperez cacert.pem depuis curl.se.
  2. Configurer PHP : ajoutez le chemin dans php.ini.
  3. Tester la configuration : verifiez avec un script de test.
  4. Debugger si necessaire : utilisez CURLOPT_VERBOSE pour plus d'infos.

Solutions en Code

Corrections pour les erreurs SSL cURL :

<?php
// Solution 1: Specifier le bundle CA dans le code
$ch = curl_init("https://api.example.com");
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

// Solution 2: Configurer dans php.ini
// curl.cainfo = "/path/to/cacert.pem"
// openssl.cafile = "/path/to/cacert.pem"

// MAUVAISE PRATIQUE - NE PAS FAIRE EN PRODUCTION
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Debug
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen("php://temp", "w+");
curl_setopt($ch, CURLOPT_STDERR, $verbose);

Telecharger cacert.pem: https://curl.se/docs/caextract.html

Bonnes Pratiques

Evitez les pieges courants :

Checklist Debug

  • cacert.pem telecharge et a jour
  • php.ini configure
  • Chemin du bundle verifie
  • Serveur distant teste (chaine complete)
  • Proxy/firewall verifie
  • CURLOPT_VERBOSE active si besoin

Questions Frequentes

Puis-je desactiver la verification SSL ?

Uniquement en developpement. JAMAIS en production, cela expose aux attaques MITM.

Ou trouver cacert.pem ?

curl.se/docs/caextract.html - c'est le bundle officiel de Mozilla.

L'erreur vient du serveur distant ?

Possible. Testez avec SSL Labs s'il s'agit d'un serveur tiers.

Ca marchait et ca ne marche plus ?

Mise a jour PHP, changement de serveur, ou expiration de certificat distant.

Guzzle a le meme probleme ?

Oui, Guzzle utilise cURL. Meme solution : configurer le bundle CA.

Comment automatiser la mise a jour du bundle ?

Creez un cron qui telecharge cacert.pem periodiquement depuis curl.se.

SSL cURL Sans Douleur

Les erreurs SSL cURL sont resolues en configurant correctement le bundle de certificats CA. Ne jamais desactiver la verification.

Surveillez vos propres certificats avec MoniTao pour eviter d'etre la source du probleme pour vos clients.

Prêt à dormir sur vos deux oreilles ?

Commencez gratuitement, sans carte bancaire.