web-dev-qa-db-fra.com

"erreur: gnutls_handshake () a échoué" lors de la connexion à des serveurs https

Lorsque j'essaie de me connecter à un serveur HTTPS avec git, le message d'erreur suivant s'affiche:

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

Je pense que certains paquets liés à gnutls_handshake ont été cassés. Donc, je veux les réinstaller.

Quels paquets peuvent être liés à ces erreurs? Ou comment résoudre ce type d'erreur?

59
Nyambaa

La raison du problème, c’était le paquet gnutlsname__. Cela fonctionne bizarre derrière un proxy. Mais opensslfonctionne bien, même dans un réseau faible. La solution consiste donc à compiler gitavec opensslname__. Pour ce faire, exécutez les commandes suivantes:

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

(N'oubliez pas de remplacer 1.7.9.5 par la version actuelle de git dans votre système.)

Editez ensuite le fichier debian/control (exécutez la commande: gksu gedit debian/control) et remplacez toutes les instances de libcurl4-gnutls-dev par libcurl4-openssl-dev.

Puis construisez le paquet (si cela échoue lors du test, vous pouvez supprimer la ligne TEST=test du fichier debian/rules):

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

Installer un nouveau paquet:

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


Inspiré d'ici: https://github.com/xmendez/wfuzz/wiki/PyCurlSSLBug

92
Nyambaa

Pour moi, le certificat SSL a été auto-signé. Essayez ceci

git config --global http.sslVerify false

8
Rick