Resuelto: server certificate verification failed en Git
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
ca-certificates en Linux con sudo apt update && sudo apt install --reinstall ca-certificatesgit config --global http.sslCAInfo /ruta/ca.crtEl 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
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
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
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
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:
BASHgit 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 falsedesactiva 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.gitpara autenticarte mediante claves criptográficas Ed25519 en lugar de HTTPS.