Solucionar el error «SSL certificate problem» en PHP

Cuando estas desarrollando en forma local y utilizando las funciones cURL de PHP para conectarte con un WebService, API o una URL HTTPS, es posible que te presente el siguiente error:

Uncaught Exception: SSL certificate problem: unable to get local issuer certificate.

En este caso estamos implementando la API de Mercado Pago y nos presenta este error.

Solución

Este error se produce cuando la variable curl.cainfo no está configurada correctamente.

Realiza los siguiente pasos para configuración:

  1. Descargue cacert.pem desde https://curl.se/docs/caextract.html
  2. Copiar el archivo cacert.pem en la carpeta extras/ssl/ de la instalación de PHP.
  3. Abrir el archivo de configuración php.ini, agregar la ubicación del archivo cacert.pem a las directivas curl.cainfo y openssl.cafile
curl.cainfo = "c:\php\extras\ssl\cacert.pem"
openssl.cafile="c:\php\extras\ssl\cacert.pem" 

En mi caso la instalación de php la tengo en la dirección c:\php, si usas XAMPP, WAMP o algún otro deberás agregar la ubicación correspondiente.

Si las 2 lineas anteriores tienen al inicio un punto y coma (;) deberá quitarlo.

Para esta configuración se requiere tener habilitado mod_ssl en apache y php_openssl.dll en el php.ini

4. Reiniciar Apache.