La mayoría de desarrolladores, ¡e incluso algunos DEVOPS!, tienen la horrible costumbre de desactivar la verificación de certificados mediante git config http.sslVerify "false" para trabajar con servidores que usan certificados autofirmados y de esta forma evitar los errores del tipo:
fatal: unable to access 'https://git.my-company.com/antonio.guillen/pymagit.git/': Peer's certificate issuer has been marked as not trusted by the user.
Este post no tiene por objetivo enumerar los posibles problemas que puede traer desactivar las comprobación de certificados, saludos man-in-the-middle, sino indicar la forma correcta de trabajar en estas circunstancias. Y no, ejecutar git config http.sslVerify "false", no es la forma correcta de trabajar.
Activar la verificación de certificados
El primer paso es volver a activar la verificación de certificados mediante git config --global --unset http.sslVerify, ejemplo:
1
2
3
4
5
6
7
C:\Users\antonio.guillen\Projects
λ git config --global --list | grep http.ssl
http.sslverify=false
C:\Users\antonio.guillen\Projects
λ git config --global --unset http.sslVerify
C:\Users\antonio.guillen\Projects
λ git config --global --list | grep http.ssl
Descargar el certificado
Es posible descargar el certificado usando el navegador o desde un terminal Linux, o Windows siempre y cuando se tengan instaladas las utilidades adecuadas, ejecutando echo | openssl s_client -showcerts -connect git.my-company.com:443 | awk '/^-----BEGIN CERT/,/^-----END CERT/'. ejemplo:
depth=2 C = US, O = "thawte, Inc.", OU = Certification Services Division, OU = "(c) 2006 thawte, Inc. - For authorized use only", CN = thawte Primary Root CA
verify return:1
depth=1 C = US, O = "thawte, Inc.", CN = thawte SSL CA - G2
verify return:1
depth=0 C = DE, ST = Baden-W\C3\BCrttemberg, L = Stuttgart, O = My COMPANY, OU = Group IT, CN = git.my-company.com
verify return:1
DONE
C:\Users\antonio.guillen\Projects
λ ls C:\Users\antonio.guillen\.git-certs\
total 4.0K
4.0K ca-bundle.crt
Configurar git para confiar en los certificados indicados
Es posible indicar a git la lista de entidades de certificación que debe usar para comprobar los certificados mediante la variable http.sslCAInfo y la ruta absoluta hasta el archivo con las CA; ejemplo: