Curl me pide que le adjunte el certificado del sitio


Siendo un requisito indispensable el uso de conexiones encriptadas para la comunicación entre nuestras aplicaciones, era mi práctica común que descargaba el certificado directamente del sitio mediante el navegador, sin embargo, este proceso lo tenia que hacer cada 3 meses ya que el sitio usa let's encrypt.

El script en cuestión lo tengo más menos así:

    $certFile = 'maytapi.com.pem'; // Ruta al archivo PEM de tu certificado

    // Inicializar la sesión cURL

    $ch = curl_init();

    // Configurar opciones de cURL

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_CAINFO, $certFile); 

    // Realizar la solicitud GET

    $response = curl_exec($ch);

Si bien descargar la cadena de certificado directo del sitio es lo forma más "eficiente", si no queremos estar haciéndolo en cortos periodos podemos optar por descargar los certificados raíz que usan los navegadores, por ejemplo Mozilla, esto me ha dado un periodo más amplio de tiempo.

Mi solución hasta el momento es descargar un Bundle de certificados ssl a través del sitio curl - Extract CA Certs from Mozilla, que de hecho ya lo descarga en formato pem.


Artículo Anterior Artículo Siguiente