Certificado SSL rechazado al intentar acceder a GitHub a través de HTTPS detrás del firewall
Estoy atrapado detrás de un firewall, así que tengo que usar HTTPS para acceder a mi repositorio de GitHub. Estoy usando Cygwin 1.7.7 en Windows XP .
Intenté configurar el control remoto en https://[email protected]/username/ExcelANT.git
, pero al presionar me solicita una contraseña, pero no hace nada una vez que la ingresé.
https://username:<password>github.com/username/ExcelANT.git
y clonando el repositorio vacío desde cero, pero cada vez me da el mismo error:
error: problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles: error:14090086:rutinas SSL:SSL3_GET_SERVER_CERTIFICATE:la verificación del certificado falló al acceder a https://github.com/username/ExcelANT.git/info/refs
Prenderme GIT_CURL_VERBOSE=1
me da
* A punto de conectar() al puerto 443 (#0) de github.com * Intentando 207.97.227.239... * Configurar correctamente las ubicaciones de verificación del certificado: * CAfile: ninguno CApath: /usr/ssl/certs * Problema con el certificado SSL, verifique que el certificado CA está bien. Detalles: error:14090086:rutinas SSL:SSL3_GET_SERVER_CERTIFICATE:verificación del certificado fallida * Caducidad borrada * Cerrando conexión #0 * A punto de conectar() al puerto 443 (#0) de github.com * Intentando 207.97.227.239... * certificado configurado correctamente verificar ubicaciones: * CAfile: ninguno CApath: /usr/ssl/certs * Problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles: error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: verificación de certificado fallida * Caducidad borrada * Error al cerrar la conexión n.º 0: problema con el certificado SSL, verifique que el certificado de CA esté bien. Detalles: error:14090086:rutinas SSL:SSL3_GET_SERVER_CERTIFICATE:la verificación del certificado falló al acceder a https://github.com/username/ExcelANT.git/info/refs
fatal: HTTP request failed
¿Es esto un problema con mi firewall, Cygwin o qué?
No había configurado el proxy HTTP en la configuración de Git. Sin embargo, es un servidor ISA que necesita autenticación NTLM , no básica, por lo que, a menos que alguien sepa cómo forzar a Git a usar NTLM, estoy arruinado.
El problema es que no tiene ningún certificado de autoridad certificadora (CA) instalado en su sistema. Y estos certificados no se pueden instalar con setup.exe de Cygwin .
Instale el paquete Net/ca-certificates en Cygwin (gracias dirkjot)
Hay dos soluciones:
- Realmente instale certificados raíz. Los chicos de curl extrajeron los certificados de Mozilla para ti .
cacert.pem
El archivo es lo que estás buscando. Este archivo contiene más de 250 certificados de CA (no sé cómo confiar en esta cantidad de personas). Debe descargar este archivo, dividirlo en certificados individuales, colocarlos en /usr/ssl/certs (su CApath) e indexarlos.
Aquí se explica cómo hacerlo. Con Cygwin setup.exe instale los paquetes curl y OpenSSL .
Ejecutar:
<!-- language: lang-bash -->
$ cd /usr/ssl/certs
$ curl http://curl.haxx.se/ca/cacert.pem |
awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
$ c_rehash
Importante : Para poder usarlo también c_rehash
debes instalarlo openssl-perl
.
Ignore la verificación del certificado SSL.
ADVERTENCIA: Deshabilitar la verificación del certificado SSL tiene implicaciones de seguridad. Sin verificación de la autenticidad de las conexiones SSL/HTTPS, un atacante malintencionado puede hacerse pasar por un punto final confiable (como GitHub o algún otro host Git remoto) y usted será vulnerable a un ataque de intermediario . Asegúrese de comprender completamente los problemas de seguridad y su modelo de amenaza antes de utilizar esto como solución.
env GIT_SSL_NO_VERIFY=true clon de git https://github...
Nota: deshabilitar la verificación SSL tiene implicaciones de seguridad . Permite ataques Man in the Middle cuando usas Git para transferir datos a través de una red. Asegúrese de comprender completamente las implicaciones de seguridad antes de utilizar esto como solución. O mejor aún, instale los certificados raíz.
Una forma es deshabilitar la verificación SSL CERT:
git config --global http.sslVerify false
Esto evitará que CURL verifique la certificación HTTPS.
Solo para un repositorio:
git config http.sslVerify false
Quería que Git usara el paquete de certificados actualizado sin reemplazar el que usa todo mi sistema. Aquí se explica cómo hacer que Git use un archivo específico en mi directorio de inicio:
mkdir ~/certs
curl https://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem
Ahora actualice .gitconfig
para usar esto para la verificación por pares:
[http]
sslCAinfo = /home/radium/certs/cacert.pem
Tenga en cuenta que estoy usando una ruta absoluta. Git no expande la ruta aquí, por lo que no puedes usarlo ~
sin un feo error. Alternativamente, puede omitir el archivo de configuración y establecer la ruta a través de la variable de entorno GIT_SSL_CAINFO
.
Para solucionar este problema, configure GIT_CURL_VERBOSE=1
. La ruta del archivo CA que utiliza Git se mostrará en las líneas que comienzan con "CAfile:" en la salida.