Archivo de la etiqueta: sslverify

Solucionar error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Fork me git - server certificate verification failed
Fork me git – server certificate verification failed

Este error SSL al clonar repositorio GIT suele aparecer en algunos repositorios. En mi caso particular apareció este error (server certificate verification failed) al clonar el repositorio de ffmpeg descrito en su propia página:

$ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

Que produce el error:

fatal: unable to access 'https://git.ffmpeg.org/ffmpeg.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Esto se debe a que GIT esta intentando validar el certificado SSL de dicho repositorio y rechaza el certificado puesto que tiene algún problema (por ejemplo puede estar autofirmado o no ser válido).

Error: server certificate verification failed

Si quieres obtener más información sobre el problema, puedes mostrar más información de depuración con:

GIT_CURL_VERBOSE=1

En mi ejemplo sería:

$ GIT_CURL_VERBOSE=1 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
Clonar en «ffmpeg»...
* Couldn't find host git.ffmpeg.org in the .netrc file; using defaults
* Trying 79.124.17.100...
* TCP_NODELAY set
* Connected to git.ffmpeg.org (79.124.17.100) port 443 (#0)
* found 168 certificates in /etc/ssl/certs/ca-certificates.crt
* found 684 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
* server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
* Curl_http_done: called premature == 1
* Closing connection 0
fatal: unable to access 'https://git.ffmpeg.org/ffmpeg.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Posibles soluciones

Existe una manera rápida y sucia de solucionar el problema que es ignorar el paso de verificar el certificado (ojo, esto implicaría que realmente confías en el sitio que estas ignorando y que si alguien ha reemplazado su certificado de forma maligna, tu asumirías las consecuencias), para ignorar la verificación en GIT:

$git config --global http.sslverify false

O bien puedes usar la variable de entorno:

$ export GIT_SSL_NO_VERIFY=1

 



Otra posible solución, es obtener el certificado autofirmado (archivo .crt) y añadirlo a la lista de los que tiene tu propio ordenador. Para ello, con el anterior comando hemos visto que el host al que debemos solicitarlo (en mi caso) es git.ffmpeg.org, luego sería el siguiente comando:

$ echo -n | openssl s_client -showcerts -connect git.ffmpeg.org:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

Esto devuelve un texto, que el el certificado y que debemos añadir a nuestro listado de certificados, normalmente en la ubicación/etc/ssl/certs/ca-certificates.crt:

$ sudo nano /etc/ssl/certs/ca-certificates.crt 

Posteriormente, si es el correcto, actualizariamos con el comando:

$ sudo update-ca-certificates

Y debería mostrar que se ha añadido uno nuevo. Con ello debería permitir clonar el repositorio que produce el fallo de verificación SSL (server certificate verification failed).