"Error: gnutls_handshake () falló" al conectarse a los servidores https

62

Cuando intento conectarme a cualquier servidor HTTPS git, aparece el siguiente error:

error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing ...
fatal: HTTP request failed

Creo que tal vez algunos paquetes relacionados gnutls_handshakeestán rotos. Entonces, quiero reinstalarlos.

¿Qué paquetes pueden estar relacionados con estos errores? ¿O cómo soluciono este tipo de error?

Nyambaa
fuente
2
Esta otra pregunta podría ayudar.
Christopher
1
En mi caso, era un servidor de autenticación simple, al que teníamos que iniciar sesión antes de usar Internet, lo que se interponía en el camino. Primero tuve que iniciar sesión allí, y luego el error desapareció.
Sahil Singh

Respuestas:

93

Tengo razón del problema, fue gnutlspaquete. Funciona raro detrás de un proxy. Pero opensslestá funcionando bien incluso en redes débiles. Así solución es que debemos compilar gitcon openssl. Para hacer esto, ejecute los siguientes comandos:

sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev
sudo apt-get build-dep git
mkdir ~/git-openssl
cd ~/git-openssl
apt-get source git
dpkg-source -x git_1.7.9.5-1.dsc
cd git-1.7.9.5

(Recuerde reemplazar 1.7.9.5con la versión real de git en su sistema).

Luego, edite el debian/controlarchivo (ejecute el comando gksu gedit debian/control:) y reemplace todas las instancias de libcurl4-gnutls-devcon libcurl4-openssl-dev.

Luego compile el paquete (si falla en la prueba, puede eliminar la línea TEST=testdel archivo debian/rules):

sudo apt-get install libcurl4-openssl-dev
sudo dpkg-buildpackage -rfakeroot -b

Instalar nuevo paquete:

i386: sudo dpkg -i ../git_1.7.9.5-1_i386.deb

x86_64: sudo dpkg -i ../git_1.7.9.5-1_amd64.deb


Inspirado desde aquí: https://github.com/xmendez/wfuzz/wiki/PyCurlSSLBug

Nyambaa
fuente
2
Tuve este mismo problema después de actualizar a Ubuntu 14.04. ¡Esta solución funcionó muy bien!
vertti
1
Trabajado con Linux Mint 16, debe ir a "Fuentes de software" y habilitar las fuentes en los repositorios oficiales. También debe desinstalar libcurl4-gnutls-dev y reemplazarlo por libcurl4-openssl-dev antes de la compilación.
Guillaume Perrot
1
Podría ayudar a las mentes maravilladas. Si está utilizando 'repositorio' para descargar un repositorio (por ejemplo, el código fuente de Android) y se encuentra con el problema gnutls-handshake, la respuesta de @ Nyambaa funciona. Repo es un script que depende de Git, por lo que deberías ser bueno. Funcionó como magia en mi Ubuntu 14.04 lts
KhoPhi
2
Shellscript para la cordura de la gente (principalmente la mía). github.com/SonOfLysander/git-openssl-shellscript/blob/master/…
Paul Nelson Baker
44
Las pruebas en el paso de compilación llevan mucho tiempo. si confía en los mantenedores de git, le recomiendo que siga las instrucciones anteriores para omitirlos eliminando la línea TEST = test de debian / rules.
Eli Albert
9

Para mí, terminó siendo que el certificado SSL fue autofirmado. Prueba esto

git config --global http.sslVerify false

Almiar
fuente
99
Esa es una idea terrible; deshabilita toda autenticación para cada conexión TLS (SSL) realizada por git, eliminando su protección contra ataques de hombre en el medio.
Curt J. Sampson