Inicio » Resuelto: server certificate verification failed en Git
Web y Código

Resuelto: server certificate verification failed en Git

✨ Respuesta Rápida

El error fatal: unable to access 'https://github.com/...': server certificate verification failed. CAfile: none CRLfile: none ocurre cuando el cliente Git no puede validar la cadena criptográfica del certificado SSL/TLS del servidor remoto contra el almacén local de Autoridades de Certificación de confianza.

El Diagnóstico Rápido

Causa
Almacén de certificados de Autoridades de Certificación (CA) del sistema operativo desactualizado
Solución
Actualizar ca-certificates en Linux con sudo apt update && sudo apt install --reinstall ca-certificates
Causa
Proxy corporativo interceptando el tráfico SSL o certificado autofirmado no registrado en Git
Solución
Configurar la ruta del certificado CA con git config --global http.sslCAInfo /ruta/ca.crt

El error fatal: unable to access 'https://github.com/...': server certificate verification failed. CAfile: none CRLfile: none ocurre cuando el cliente Git no puede validar la cadena criptográfica del certificado SSL/TLS del servidor remoto contra el almacén local de Autoridades de Certificación de confianza.

La Solución Paso a Paso

  1. 1

    Paso 1: Actualizar los certificados raíz del sistema operativo

    La causa más habitual en servidores Linux desactualizados es la expiración de certificados raíz antiguos (como Let's Encrypt o DigiCert):

    BASH
    # En Debian / Ubuntu:
    sudo apt-get update
    sudo apt-get install --reinstall ca-certificates -y
    sudo update-ca-certificates
    
    # En Arch Linux / CachyOS:
    sudo pacman -Sy ca-certificates --noconfirm
    
    # En Red Hat / CentOS / Rocky Linux:
    sudo dnf reinstall ca-certificates -y
    sudo update-ca-trust
    
  2. 2

    Paso 2: Configurar la ruta explícita del archivo CA en Git

    Si utilizas un certificado corporativo de empresa o una CA interna:

    BASH
    # Configurar la ruta global de la Autoridad de Certificación
    git config --global http.sslCAInfo /etc/ssl/certs/ca-certificates.crt
    
    # En Windows:
    git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"
    
  3. 3

    Paso 3: Sincronizar el reloj del sistema mediante NTP

    Si la fecha y hora de tu máquina están desfasadas, los certificados válidos serán rechazados automáticamente:

    BASH
    # Sincronizar reloj en Linux
    sudo timedatectl set-ntp true
    timedatectl status
    
  4. 4

    Paso 4: Configurar Git para usar el almacén nativo del sistema en Windows (Schannel)

    En Windows, configura Git para usar el almacén de certificados de Windows en lugar del bundle OpenSSL interno:

    BASH
    git config --global http.sslBackend schannel
    

❓ Preguntas Frecuentes (FAQ)

¿Cómo desactivo sslVerify solo para un comando de emergencia?

Puedes pasar el flag en línea sin alterar la configuración global: git -c http.sslVerify=false clone https://....

¿Por qué mi navegador abre GitHub pero Git falla en la terminal?

Porque los navegadores web modernos tienen almacenes de certificados independientes de la biblioteca OpenSSL que utiliza la CLI de Git.

Consejo de Prevención

Prácticas de seguridad recomendadas:

  • No uses http.sslVerify false de forma permanente: Ejecutar git config --global http.sslVerify false desactiva la comprobación criptográfica en todos tus repositorios, exponiendo tus credenciales y código a ataques de intermediario (Man-in-the-Middle).
  • Utiliza autenticación SSH: Considera clonar repositorios mediante git@github.com:usuario/repo.git para autenticarte mediante claves criptográficas Ed25519 en lugar de HTTPS.