Añadir una CA de confianza en Ubuntu para clonar un repo Git

¿Alguna vez te salió este mensaje cuando intentabas clonar un repo Git en Ubuntu?

fatal: unable to access 'https://gitlab.programarivm.com/jordi/a-repo.git': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Que no cunda el pánico. Tu ordenador no reconoce la CA (Autoridad de Certificación) que firmó el certificado digital del servidor GitLab al que intentas conectarte. Se arregla fácilmente.

Conexión segura HTTPS SSL

Si quieres salir del paso rápidamente porque estás trabajando en una máquina de desarrollo, por ejemplo, y quieres comprobar si el repo funciona, puedes desactivar la verificación SSL de Git:

git config --global http.sslverify false

Aunque en general no es lo más recomendable.

La solución a este problema consiste en añadir el certificado digital a tu lista de CAs de confianza. El primer paso de todos es conectarnos al servidor que tiene el certificado digital que no pasa la verificación y exportarlo a nuestro sistema operativo.

He preprado esta guía sencilla que explica cómo hacerlo paso a paso en Firefox, pero el procedimiento es bastante parecido en todos los navegadores web.
Clicamos en el icono del candado

Figura 1. Nos conectamos al servidor y clicamos en el icono del candado

Más información

Figura 2. Luego clicamos en Más información

Ver Certificado

Figura 3. A continuación nos vamos a Seguridad y clicamos en Ver Certificado

Exportar certificado

Figura 4. Seleccionamos la pestaña Detalles y hacemos clic en Exportar…

En este ejemplo yo he guardado el archivo gitlab.programarivm.com.crt en mi escritorio de Ubuntu /home/jordi/Desktop, pero si prefieres ir más rápido puedes hacer todos los pasos anteriores por consola:

openssl s_client -servername gitlab.programarivm.com -connect gitlab.programarivm.com:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/home/jordi/Desktop/gitlab.programarivm.com.crt

Muy importante. Asegúrate de que el archivo está en formato PEM (empieza con ----BEGIN CERTIFICATE----) y tiene la extensión .crt.

Ahora me llevo el archivo a la carpeta /usr/local/share/ca-certificates/

sudo mv gitlab.programarivm.com.crt /usr/local/share/ca-certificates/

Y ya para terminar actualizo mi almacén de CAs de confianza:

sudo update-ca-certificates

Si todo va bien obtenemos un mensaje que nos indica que el certificado se ha añadido correctamente. Este comando añade nuestro recién creado certificado PEM al final del archivo /etc/ssl/certs/ca-certificates.crt.

Para eliminar el certificado basta con borrarlo de /usr/local/share/ca-certificates/ y volver a actualizar el almacén de CAs conocidas:

sudo update-ca-certificates --fresh

También te puede interesar leer esto…