Cómo solucionar el error de «cURL error 60: SSL certificate problem» al actualizar o instalar @ Ayuda WordPress

Si alguna vez te has encontrado, al actualizar o instalar plugins y temas, con que no se finaliza el proceso, y que en su lugar se muestra un error como este, no te preocupes, que tiene fácil solución.

Actualización fallida: Descarga fallida cURL error 60: SSL certificate problem: xxxxxxxxxx

¿Por qué sale el error cURL 60 del certificado SSL?

A veces, cuando realizamos una llamada curl a servicios de terceros, obtenemos un error curl: (60) Certificado SSL: no se puede obtener el certificado del emisor local, o el certificado ha caducado.

Este error se produce porque curl verifica y realiza una solicitud de conexión segura mediante un certificado autofirmado. Cuando no encuentra el certificado válido, o lo identifica como caducado, y muestra un error.

En muchas ocasiones es debido a que  el certificado interno de WordPress, ubicado en wp-includes/certificates/ca-bundles.crt incluye un certificado que ha caducado.

Cómo se arregla el error de cURL 60 con certificados SSL?

Hay varias maneras, y debes comprobar cuál es la que te funciona a ti en concreto en cada instalación, hasta dar con la que se adapte a tu problema específico.

Desactiva la verificación de SSL en tu sitio

Un modo sencillo, aunque no carente de peligro, es desactivar la verificación del certificado, añadiendo estas líneas a tu archivo functions.php o como prefieras hacerlo:

add_filter('https_ssl_verify', '__return_false');

Una vez guardados los cambios deberías poder actualizar o instalar, lo que fuera que no te dejaba antes.

Saltarse la comprobación de WordPress del certificado

Otra opción, menos radical, sería omitir esta comprobación. En este caso el código a añadir sería el siguiente:

add_action( 'http_api_curl', function( $handle ) {
curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, false );
});

Sustituye el contenido del certificado de WordPress

Otro método, que puede servirte temporalmente, hasta la próxima actualización de WordPress, es sustituir el contenido del certificado de WordPress por uno actualizado. Puedes hacerlo de 2 maneras:

  1. Manualmente:
    1.1 – Descarga este archivo: https://curl.se/ca/cacert.pem.
    1.2 – Actualiza el contenido del archivo /wp-includes/certificates/ca-bundle.crt con el contenido del archivo descargado.
    ¡Ya está! Ahora ya no deberías ver el error de certificado caducado.
  2. Automáticamente (una vez):
    2.1 – Añade este código al final del archivo functions.php del tema activo:
    if( isset( $_GET['update-wp-ca-bundle'] ) ){
    $crt_file = ABSPATH . WPINC . '/certificates/ca-bundle.crt';
    $new_crt_url = 'http://curl.haxx.se/ca/cacert.pem';
    if( is_writable( $crt_file ) ){
    $new_str = file_get_contents( $new_crt_url );
    if( $new_str && strpos( $new_str, 'Bundle of CA Root Certificates' ) ){
    $up = file_put_contents( $crt_file, $new_str );
    echo $up ? 'OK: ca-bundle.crt updated' : 'ERROR: can`t put data to ca-bundle.crt';
    }
    else {
    echo 'ERROR: can\'t download curl.haxx.se/ca/cacert.pem';
    }
    }
    else {
    echo 'ERROR: ca-bundle.crt not writable';
    }
    exit;
    }

    2.2 – En la barra de direcciones del navegador teclea esta dirección y pulsa la tecla INTRO (sustituyendo el dominio de ejemplo por el tuyo):
    https://EJEMPLO.COM/?update-wp-ca-bundle
    ¡Ya está! Ahora borra el código anterior, esto solo debes ejecutarlo una única vez.

Igual que antes, ahora todo debería funcionar.

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *