68 votes

"error : gnutls_handshake() failed" lors de la connexion à des serveurs https

Lorsque j'essaie de me connecter à un serveur HTTPS avec git il donne l'erreur suivante :

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

Je pense que peut-être certains paquets qui sont liés à gnutls_handshake ont été brisées. Donc, je veux les réinstaller.

Quels paquets peuvent être liés à ces erreurs ? Ou comment puis-je corriger ce type d'erreur ?

98voto

Jan Deinhard Points 111

La raison du problème, c'était gnutls paquet. Ça fonctionne bizarrement derrière un proxy. Mais openssl fonctionne bien même dans un réseau faible. Donc la solution de contournement est de compiler git con openssl . 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 avec la version réelle de git dans votre système).

Ensuite, modifiez debian/control (exécuter la commande : gksu gedit debian/control ) et remplacer toutes les instances de libcurl4-gnutls-dev con libcurl4-openssl-dev .

Puis construisez le paquet (s'il échoue au test, vous pouvez supprimer la ligne TEST=test à partir 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

9voto

Rick Points 267

Pour moi, il s'est avéré que le certificat SSL était auto-signé. Essayez ceci

git config --global http.sslVerify false

1voto

glaucon Points 173

Ceci est mentionné dans l'une des commentaires sur une autre réponse mais je pense qu'elle doit être plus visible https://askubuntu.com/users/177551/paul-nelson-baker a écrit un Shell Shell qui, pour moi, a résolu ce problème.

Le script est disponible dans son référentiel https://github.com/paul-nelson-baker/git-openssl-shellscript et recompile git avec openssl au lieu de gnutls. Lisez le README pour toute l'histoire mais ça a marché pour moi donc merci Paul.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X