Certificado SSL rechazado al intentar acceder a GitHub a través de HTTPS detrás del firewall

390

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 presioné las solicitudes de una contraseña, pero no hace nada una vez que la ingresé. https://username:<password>github.com/username/ExcelANT.gity clonar el repositorio vacío desde cero, pero cada vez me da el mismo error

error: 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

Encenderme GIT_CURL_VERBOSE=1me da

* A punto de conectarse () al puerto 443 de github.com (# 0)
* Intentando 207.97.227.239 ... * establecer correctamente las ubicaciones de verificación de certificados:
* CAfile: ninguno
CApath: / usr / ssl / certs
* Problema de certificado SSL, verifique que El certificado de CA está bien. Detalles:
error: 14090086: Rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: verificación de certificado fallida
* Caducidad borrada
* Cierre de conexión # 0
* A punto de conectarse () al puerto 443 (# 0) de
github.com * Intentando 207.97.227.239 ... * configuró con éxito el certificado verificar ubicaciones:
* CAfile: ninguno
CApath: / usr / ssl / certs
* Problema de certificado SSL, verifique que CA cert esté bien. Detalles:
error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado
* Caducidad borrada
*
Error al cerrar la conexión n. ° 0 : 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

fatal: HTTP request failed

¿Es este 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ásico, por lo que a menos que alguien sepa cómo obligar a git a usar NTLM, estoy descuidado.

oharab
fuente
Si configuro http.sslVerify falso, ¿la conexión será segura? y es un buen camino para usar? En el medio estamos usando el firewall pfsense. en este momento, el archivo .gitconfig en el perfil del usuario está en blanco.
Nullpointer

Respuestas:

57

No dude en pasar esta respuesta si desea solucionar el problema de los certificados. Esta respuesta trata de hacer un túnel con ssh a través del firewall, lo cual es, en mi humilde opinión, una mejor solución para lidiar con cosas de firewall / proxy.

Hay una mejor manera que usar el acceso http y es usar el servicio ssh ofrecido por github en el puerto 443 del servidor ssh.github.com.

Utilizamos una herramienta llamada sacacorchos. Está disponible tanto para CygWin (a través de la configuración desde la página de inicio de cygwin) como para Linux utilizando su herramienta de empaque favorita. Para MacOSX está disponible en macports y brew al menos.

La línea de comando es la siguiente:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

El proxyhost y el proxyport son las coordenadas del proxy https. El targetthost y targetport es la ubicación del host para hacer un túnel. El archivo de autenticación es un archivo de texto con 1 línea que contiene su nombre de usuario / contraseña del servidor proxy separados por dos puntos

p.ej:

abc:very_secret

Instalación para usar el protocolo ssh "normal" para la comunicación git

Al agregar esto al ~/.ssh/configthis trick se puede usar para conexiones ssh normales.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

ahora puedes probar que funciona al enviar a gitproxy

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(Nota: si nunca antes ha iniciado sesión en github, ssh le pedirá que agregue la clave del servidor al archivo de hosts conocido. Si es paranoico, se recomienda verificar la huella digital RSA a la que se muestra en el sitio de github donde subió su clave).

Una ligera variante de este método es el caso cuando necesita acceder a un repositorio con otra clave, por ejemplo, para separar su cuenta privada de su cuenta profesional.

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

¡disfrutar!

Hemos estado usando esto durante años en Linux, Mac y Windows.

Si lo desea, puede leer más al respecto en esta publicación de blog

Peter Tillemans
fuente
Dejé de hacer que esto funcionara, pero le eché otro vistazo y lo puse a funcionar. El cambio de .ssh / config a> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa y la clonación usando git clone lo [email protected]:oharab/log4vba.gitpusieron en marcha en poco tiempo.
oharab
1
Solo estoy votando negativamente porque la respuesta a continuación es más útil, pero desafortunadamente stackoverflow siempre coloca la respuesta aceptada en la parte superior, incluso si fue solo una respuesta por una sola circunstancia.
mjaggard
1
En cualquier caso, actualicé la respuesta, ya que encuentro que la tunelización SSL a través del proxy https sigue siendo una mejor solución que jugar con los certificados HTTPS o deshabilitarlos y terminar con una solución que aún es menos eficiente, fácil de usar y menos segura. Bueno, muchos votos positivos demuestran que estoy equivocado, pero de todos modos me apego a mi opinión en este asunto.
Peter Tillemans
523

El problema es que no tiene ninguno de los certificados de la Autoridad de Certificación instalado en su sistema. Y estos certificados no se pueden instalar con cygwin's setup.exe.

Actualización: Instale el paquete de certificados Net / ca en cygwin (gracias dirkjot)

Hay dos soluciones:

  1. Realmente instale certificados raíz. Curl chicos extrajeron para ustedes certificados de Mozilla .

    cacert.pemarchivo es lo que estás buscando. Este archivo contiene> 250 certificados de CA (no sé cómo confiar en este número de personas). Debe descargar este archivo, dividirlo en certificados individuales, colocarlos en / usr / ssl / certs (su CApath) e indexarlos.

    Aquí está cómo hacerlo. Con cygwin setup.exe, instale los paquetes curl y openssl, ejecute:

    $ 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_rehashdebes instalarlo openssl-perl.

  2. Ignorar la verificación del certificado SSL.

    ADVERTENCIA: Deshabilitar la verificación del certificado SSL tiene implicaciones de seguridad. Sin la verificación de la autenticidad de las conexiones SSL / HTTPS, un atacante malintencionado puede hacerse pasar por un punto final de confianza (como GitHub o algún otro host Git remoto), y será vulnerable a un ataque Man-in-the-Middle . Asegúrese de comprender completamente los problemas de seguridad y su modelo de amenaza antes de usar esto como una solución.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
Alexey Vishentsev
fuente
99
No necesita instalar curl, solo use wget:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Deebster
38
Sé que esto es cygwin, pero en caso de que alguien llegue aquí usando Centos, es / etc / pki / tls / certs donde deberían ir los .pem.
Deja de calumniar a Monica Cellio el
2
No funcionó para mí, sin embargo, no tengo c_rehash en mi camino. Intenté reiniciar mi shell. También tuve que mkdir -p / usr / ssl / certs. Me pregunto si mi instalación de Cygwin es diferente o falta algo. Además, establecer GIT_SSL_NO_VERIFY = true seguido de ejecutar la operación de clonación resultó en este error: ¿ fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Tal vez funcionará después de reiniciar?
Jeff Axelrod
77
Esta respuesta es incorrecta. Simplemente instale el ca-certificatespaquete cygwin para obtener los certificados raíz que faltan. ¿Por qué esta respuesta obtuvo tantos ups?
rurban
32
No desactive la verificación del certificado SSL. Esto sucede con demasiada frecuencia en herramientas y código de aplicación en toda la industria. Te abre a un hombre en el medio ataque. Si vas a usar SSL, entonces úsalo correctamente.
Tim
430

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 usar esto como una 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
Yi Zhao
fuente
17
Si no desea editar su configuración global (por ejemplo, todos los repositorios), excluya --global
Erin el
57
¿podría agregar una nota sobre lo extremadamente peligroso que es esto?
Crónica
26
Esta es una idea terrible. Hay una razón por la cual los certificados deben ser verificados. si no verifica el certificado como confiable, cualquiera podría generar el certificado y usted podría ser susceptible a un hombre en el medio del ataque.
Mark Carey
24
¡No desactive la verificación SSL!
Tim
14
Para todas las personas "no lo hagas": Seguro, este no es el enfoque más seguro en absoluto. PERO, ¡es una opción mucho mejor que no tener SSL en absoluto! Debido a que algunas personas ejecutan solo sus servidores privados simples de git, está bien para ellos. Claro, para cualquier seguridad real es la configuración NO GO. Lo más inseguro es enviar los bytes simples a través de la red.
Peter Stegnar
109

Quería que Git usara el paquete de certificados actualizado sin reemplazar el que usa todo mi sistema. Aquí le mostramos cómo hacer que Git use un archivo específico en mi directorio de inicio:

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

Ahora actualice .gitconfigpara 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 hace expansión de ruta aquí, por lo que no puede usar ~sin un feo kludge. 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, establezca GIT_CURL_VERBOSE=1. La ruta del archivo CA que Git está usando se mostrará en las líneas que comienzan con "CAfile:" en la salida.

kenchilada
fuente
12
Para mí, esta es la mejor respuesta: funciona en Unix (NetBSD en realidad), afecta solo a git y no a nada más en el sistema, y ​​no requiere acceso de administrador / root. ¡Gracias!
Eric
1
Perfecto, uno incluso puede hacerlo mejor. ¡He reemplazado mi viejo /etc/ssl/certs/ca-certificates.crten mi Ubuntu 8.04 LTS con este archivo y funcionó mágicamente!
Michael-O
1
@Eric gracias por mencionar NetBSD ya que significa que encontré esta respuesta. NetBSD es un poco extraño. Instalé el paquete OpenSSL, pero incluso eso no te da los certificados, solo un directorio de marcador de posición.
atomicules
+200 Más impresionante, también funcionó en mi caja de Ubuntu. No es necesario deshabilitar la comprobación de certificados en git, solo haz esta solución rápida.
Colin D Bennett
11
Excelente respuesta, puede omitir la edición manual del archivo ~ / .gitconfig con el siguiente comando:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia
41

Tenga en cuenta que para que esto funcione (instalación de RVM en CentOS 5.6), tuve que ejecutar lo siguiente:

export GIT_SSL_NO_VERIFY=true

y después de eso, el procedimiento de instalación estándar para curvar el instalador RVM en bash funcionó de maravilla :)

seanp2k
fuente
13
mismo efecto que git config --global http.sslverify false
Dyno Fu
20
¡Esto es EXTREMADAMENTE PELIGROSO! ¡El objetivo de la verificación del certificado SSL es proteger su código de la manipulación cuando lo transmite a través de HTTPS! Deshabilitarlo significa que las personas maliciosas pueden insertar vulnerabilidades y otras cosas desagradables en su código mientras lo empuja y lo recupera.
Si configuro http.sslVerify falso, ¿la conexión será segura? y es un buen camino para usar? En el medio estamos usando el cortafuegos
pfsense
@Ravi la conexión técnicamente el trabajo, sí, pero de manera inequívoca es que no es una buena idea. Si tanto su origen git como la máquina local son internos y están bajo el control de su organización, puede ser aceptable , pero según el comentario del usuario 456814, la desactivación de la verificación lo abre a los ataques MITM.
Doktor J
40

Una solución muy simple: reemplazar https: // con git: //

Use git: //the.repository en lugar de https: //the.repository y funcionará.

He tenido este problema en Windows con TortoiseGit y esto lo resolvió.

klodoma
fuente
Supongo que esto funciona porque no verifica SSL git://. Como se indicó en esta respuesta anterior , deshabilitar la verificación SSL es un riesgo de seguridad.
danijar
55
@danijar, la razón por la que esto funciona es porque ni siquiera usa SSL en absoluto . El git://protocolo utiliza SSH, que utiliza pares de claves públicas y privadas SSH para autenticación y cifrado, en lugar de un certificado SSL.
11
@Cupcake git://qué no usar SSH. Ver El Protocolo SSH y El Protocolo Git .
nyuszika7h
@ nyuszika7h oh, tienes razón. Me sigo git://confundiendo con [email protected]:user/project.git, que es la sintaxis de SCP-ish .
31

Como dice la respuesta más popular (por Alexey Vishentsev):

El problema es que no tiene ninguno de los certificados de la Autoridad de Certificación instalado en su sistema. Y estos certificados no se pueden instalar con cygwin's setup.exe.

Sin embargo, esa última afirmación es falsa (ahora, o siempre lo ha sido, no lo sé).

Todo lo que tiene que hacer es ir a la configuración de cygwin e incluir el paquete 'ca-certificados' (está en Net). Esto hizo el truco para mí.

dirkjot
fuente
1
se muestra el error cygwin git CAfile: /etc/ssl/ca-bundle.crtmientras que se instala el paquete cygwin ca-certificados /usr/ssl/certs/ca-bundle.crt. Por lo tanto, tuve que editar ~/.gitconfigpara especificar la ubicación: [http]luegosslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk
@maxpolk: Hubiera hecho un enlace pero el efecto es el mismo. Esto es claramente un error en cygwin git, ¿has considerado recaudar un boleto? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot
A partir de hoy 2013-5-23, cygwin git funciona bien sobre https: si también tiene / recuerde instalar cygwin's ca-certificates.
bobbogo
Llegué aquí de esta pregunta , que indica que se puede encontrar una respuesta aquí. Sin embargo, ni la respuesta vinculada ni esta respuesta funcionan para mí; TortoiseSVN sigue emitiendoerror: SSL certificate problem, verify that the CA cert is OK.
O Mapper
¿Dónde exactamente instalamos los archivos de instalación de cygwin desde el administrador de paquetes? ¿Los certificados ca deben estar dentro de la carpeta bin de Git?
221b
16

Sé que la pregunta original enumera a Cygwin, pero aquí está la solución para CentOS:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Fuente: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/

Herman J. Radtke III
fuente
Esto funciono muy bien para mi; Sin embargo, probablemente debería hacer una copia de seguridad del original, como sugiere el OP. Parece que esto sucede cuando Github renueva su certificado, si está en un sistema que tiene uno más antiguo.
Evan Donovan
En CentOS 5 lo arreglé yum update openssl, lo que también actualiza el paquete ca.
raarts
si va a seguir esta opción, debe verificar el hash SHA-256 del archivo antes de usarlo. Puede obtener el sha256sum para el archivo actual por algún otro medio que no sea el rizo que está configurando (como un navegador en una máquina diferente que ya está configurada de forma segura) y luego compárelo con la salida de sha256sum /etc/pki/tls/certs/ca-bundle.crtpara asegurarse de que tiene el correcto archivo.
kbolino
16

Para clonar en Windows mientras configura SSL, verifique como falso:

    git -c http.sslVerify=false clone http://example.com/e.git

Si desea clonar sin modificar su configuración global.

FlavorScape
fuente
14

En CentOS 5.x, una simple yum update opensslactualización del paquete openssl que actualizó el ca-bundle.crtarchivo del sistema y solucionó el problema por mí.

Lo mismo puede ser cierto para otras distribuciones.

Wayne Walker
fuente
ñam! Esto funcionó para mí para una instalación anterior (4.1.2) de Red Hat Linux. ¡Gracias!
Josh
13

Si todo lo que quiere hacer es usar el cliente Cygwin git con github.com, hay una manera mucho más simple sin tener que pasar por la molestia de descargar, extraer, convertir y dividir archivos cert. Proceda de la siguiente manera (supongo que Windows XP con Cygwin y Firefox)

  1. En Firefox, vaya a la página de github (cualquiera)
  2. haga clic en el icono de github en la barra de direcciones para mostrar el certificado
  3. Haga clic en "más información" -> "mostrar certificado" -> "detalles" y seleccione cada nodo en la jerarquía comenzando por el superior; para cada uno de ellos, haga clic en "Exportar" y seleccione el formato PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Guarde los archivos anteriores en algún lugar de su unidad local, cambie la extensión a .pem y muévalos a / usr / ssl / certs en su instalación de Cygwin (Windows: c: \ cygwin \ ssl \ certs)
  5. (opcional) Ejecute c_reshash desde el bash.

Eso es.

Por supuesto, esto solo instala una jerarquía de certificados, la que necesita para github. Por supuesto, puede utilizar este método con cualquier otro sitio sin la necesidad de instalar 200 certificados de sitios en los que no confía (necesariamente).

esquifit
fuente
8

Si tiene Mac OS X, puede instalar el paquete ca-cert a través de homebrew:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

La fórmula instala el paquete de certificados en su recurso compartido a través de:

share.install 'ca-bundle.crt'

El sharemétodo es solo un alias /usr/local/sharey curl-ca-bundle lo proporciona Mozilla. Es lo que ves referenciado en muchos temas. Espero que esto ayude, ya que no es muy sencillo acerca de cómo abordar esto en Mac OS X. brew install curlTampoco le dará mucho, ya que es solo un barril y no estará vinculado (la ejecución which curlsiempre saldrá /usr/bin/curl, que es el valor predeterminado que se envía con su OS). Esta publicación también puede ser de algún valor .

Por supuesto, deberá deshabilitar SSL antes de instalar, homebrewya que es un repositorio git. Simplemente haga lo que dice curl cuando se produce un error durante la verificación SSL y:

$ echo insecure >> ~/.curlrc

Una vez que te homebrewinstales junto con el curl-ca-bundle, borra .curlrce intenta clonar un repositorio en github. Asegúrese de que no haya errores y estará listo para comenzar.

NOTA: Si recurre a él .curlrc, retírelo de su sistema en el momento en que termine la prueba. Este archivo puede causar problemas importantes, así que úselo con fines temporales y con precaución. brew doctorse quejará en caso de que se olvide de purgarlo de su sistema).

NOTA: Si actualiza su versión de git, deberá volver a ejecutar este comando, ya que la configuración de su sistema se eliminará (se almacenan en relación con el binario de git según la versión).

Entonces, después de correr:

$ brew update
$ brew upgrade

Si obtiene una nueva versión de git, simplemente vuelva a ejecutar:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

Y estarás listo.

Por último, si tiene una nueva versión de git, ejecute:

$ git config -l --system

debería darte un error en la línea de

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

ese es tu consejo que debes decirle a git dónde está el paquete de Mozilla ca.

ACTUALIZAR:

.curlrcpuede o no ser el remedio a su problema. En cualquier caso, solo instale el paquete Mozilla ca-bundle en su máquina, ya sea que tenga que descargarlo manualmente o no. Eso es lo importante aquí. Una vez que obtenga el paquete ca, estará listo para comenzar. Simplemente ejecute el comando git config y apunte git al paquete ca.

ACTUALIZAR

Recientemente tuve que agregar:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crta mi .zshenvarchivo de puntos ya que estoy usando zsh. la git configopción funcionó para la mayoría de los casos, pero cuando golpeé github a través de SSL ( rvm get stablepor ejemplo), todavía me encontré con problemas de certificado. @Maverick señaló esto en su comentario, pero en caso de que alguien se lo pierda o asuma que no necesariamente necesita exportar esta variable de entorno además de ejecutar el git config --system....comando. Gracias, y espero que esto ayude.

ACTUALIZAR

Parece que el paquete curl-ca se eliminó recientemente de homebrew . Hay una recomendación aquí .

Querrá colocar algunos archivos en:

$(brew --prefix)/etc/openssl/certs

A-Dubb
fuente
1
También puede intentar lo siguiente: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick
Hola, tengo un problema similar ( stackoverflow.com/questions/20939105/… ) y el mismo problema aparece cuando intento instalar home-brew. ¿Qué puedo hacer en este caso? Escribir "git config --sistema http.sslcainfo /usr/local/share/ca-bundle.crt" en mi consola devuelve "error: no se pudo bloquear el archivo de configuración /Aplicaciones/Xcode.app/Contents/Developer/usr/etc/ gitconfig: No existe tal archivo o directorio ". ¡Gracias por tu ayuda!
Mathieu
@ Mathieu eso es bastante extraño. Parece que su sistema apunta a una versión de git relativa a XCode. ¿Cuál es el resultado de ejecutar 'which git' desde su terminal?
A-Dubb
7

Puedes probar este comando en la Terminal :

git config --global http.sslVerify false

reza_khalafi
fuente
5

Solucioné este problema usando apt-cyg (un gran instalador similar a apt-get) para descargar fácilmente los certificados ca (incluidos Git y muchos más):

apt-cyg install ca-certificates

Nota : apt-cyg debe instalarse primero. Puede hacer esto desde la línea de comandos de Windows:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Cierre el cmd de Windows y abra Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
sagunms
fuente
Esto no funcionó para mí, sigo teniendo el mismo error.
holdenlee
4

en un rasbery pi tuve

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonación en 'Dropbox-Uploader' ... error: ¿Problema con el certificado SSL CA (ruta? derechos de acceso?) al acceder http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: solicitud HTTP fallida

así que id

sudo apt-get install ca-certificates

entonces

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

trabajó

Fred
fuente
4

Si usó un sistema operativo basado en Debian, simplemente puede ejecutar

apt-get install ca-certificados

Patricio
fuente
4

He tenido este mismo problema para Solaris Express 11. Me tomó un tiempo, pero logré encontrar dónde debían colocarse los certificados. Según /etc/openssl/openssl.cnf, la ruta para los certificados es / etc / openssl / certs. Coloqué los certificados generados utilizando los consejos anteriores de Alexey.

Puede verificar que las cosas funcionen usando openssl en la línea de comandos:

openssl s_client -connect github.com:443
Martin Smith
fuente
3

Intente usar un archivo .netrc, se autenticará a través de https. Cree una llamada de archivo .netrcen su directorio de inicio y póngalo allí:

machine github.com login myusername password mypass

Vea esta publicación para más información:

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj

Travis Reeder
fuente
Este es un problema de validación de certificados, no un problema de autenticación: algunos sistemas operativos (incluido el que ejecuta el OP) no tienen el nuevo certificado de github de CA incluido en la lista de existencias.
Charles Duffy
3

Mejore la solución de RouMao al deshabilitar temporalmente la verificación de GIT / curl ssl en Windows cmd:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

Lo bueno de esta solución es que solo tiene efecto en la ventana de cmd actual.

Mariscal
fuente
3
¡Esto es EXTREMADAMENTE PELIGROSO! ¡El objetivo de la verificación del certificado SSL es proteger su código de la manipulación cuando lo transmite a través de HTTPS! Deshabilitarlo significa que las personas maliciosas pueden insertar vulnerabilidades y otras cosas desagradables en su código mientras lo empuja y lo recupera.
3

¿Has revisado tu tiempo?

Me negué absolutamente a hacer que mis operaciones de git fueran inseguras y después de probar todo lo que la gente mencionó aquí, me di cuenta de que una posible causa por la cual los certificados no pasan la verificación es que las fechas son incorrectas (ya sea la fecha de vencimiento del certificado o el reloj local ).

Puede verificar esto fácilmente escribiendo dateun terminal. En mi caso (una nueva Raspberry Pi), el reloj local se configuró en 1970, por lo que un simple lo ntpdate -u 0.ubuntu.pool.ntp.orgarregló todo. Para un rPi, también recomendaría que coloque el siguiente script en un trabajo cron diario (digamos /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Deiu
fuente
3

Genere el token de acceso desde Github y guárdelo, ya que no volverá a aparecer.

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

o,

git config --global http.sslVerify false
git clone https://github.com/repo.git
Naseer-shaik
fuente
2

Encontré el mismo problema para configurar Git en una plataforma de desarrollo colaborativo que tengo que administrar.

Para resolverlo:

  • He actualizado la versión de Curl instalada en el servidor. Descargue la última versión en el sitio web Descargue la página de curl y siga los procedimientos de instalación Procedimientos de instalación de curl

  • Recupere el certificado de la autoridad que entrega el certificado para el servidor.

  • Agregue este certificado al archivo CAcert utilizado por curl. En mi servidor está ubicado en /etc/pki/tls/certs/ca-bundle.crt.

  • Configure git para usar este archivo de certificado editando el archivo .gitconfig y establezca la ruta sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • En la máquina cliente, debe obtener el certificado y configurar también el archivo .gitconfig.

Espero que esto ayude a algunos de ustedes.

G. Pfeiffer
fuente
1

Intenté todo, eventualmente busqué en el archivo de hosts y había una entrada aleatoria para github. Eliminar el alias solucionó el problema

% systemroot% \ system32 \ drivers \ etc \ hosts

GenericEventHandler
fuente
1

Simplemente deshabilité la autenticación del certificado SSL y utilicé el inicio de sesión de contraseña de nombre de usuario simple como se muestra a continuacióningrese la descripción de la imagen aquí

0x3bfc
fuente
0

Necesitaba dos cosas:

  1. vaya a la configuración de cygwin e incluya el paquete ' ca-certificados ' (está bajo Net) (como se indica en otro lugar).

  2. Dile a git dónde encontrar los certificados instalados:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...

    (La opción detallada no es necesaria)

    O almacenar la opción de forma permanente:

    git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...

usuario2896631
fuente
-2

Tuve el mismo problema. La importación de certificados o el comando para desarmar la verificación SSL no funcionaron. Resulta ser una contraseña caducada para el proxy de red. Hubo entrada de la configuración del proxy. en el archivo .gitconfig presente en mi perfil de usuario de Windows. Acabo de eliminar toda la entrada y comenzó a funcionar nuevamente.

savia
fuente
-2

En un sistema Mac OSX 10.5, pude hacer que esto funcionara con un método simple. Primero, ejecute los procedimientos de github y la prueba, que funcionó bien para mí, mostrando que mi certificado estaba realmente bien. https://help.github.com/articles/generating-ssh-keys

ssh -T [email protected]

Entonces finalmente noté otro formato de URL para controles remotos. Probé los otros, arriba y no funcionaron. http://git-scm.com/book/ch2-5.html

[email protected]:MyGithubUsername/MyRepoName.git

¡Un simple "git push myRemoteName" funcionó muy bien!

AnneTheAgile
fuente
-2

Recientemente (julio de 2014) tuve un problema similar y encontré en OS X (10.9.4) que había expirado un certificado de "DigiCert High Assurance EV Root CA" (aunque también tenía otro no vencido).

  1. Acceso a llavero abierto
  2. buscar certificados para "DigiCert"
  3. Ver menú> Mostrar certificados caducados

Encontré dos certificados llamados "DigiCert High Assurance EV Root CA", uno con vencimiento en noviembre de 2031 y otro con vencimiento en julio de 2014 (algunos días antes). Eliminar el certificado vencido resolvió el problema por mí.

Espero que esto ayude.

craigb
fuente
-2

Para aquellos que usan Msys / MinGW GIT, agregue esto

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
John Chain
fuente