web-dev-qa-db-fra.com

erreur: gnutls_handshake () a échoué au référentiel GIT

L'erreur suivante apparaît lorsque j'essaie de cloner le référentiel Git. J'ai les clés publiques RSA configurées correctement aussi.

$ git clone https://github.com/blah/blah.git
Initialized empty Git repository in /home/arun/.git/
error: gnutls_handshake() failed: A TLS packet with unexpected length was
       received. while accessing https://github.com/blah/blah.git/info/refs

fatal: HTTP request failed
17
Arun Jayapal

Il pourrait être utilisé pour un GnuTLs ou pycurl bug

Voici la nouvelle méthode pour pycurl_7.19.0-4ubuntu3:

Sudo apt-get install build-essential fakeroot dpkg-dev
mkdir ~/python-pycurl-openssl
cd ~/python-pycurl-openssl
Sudo apt-get source python-pycurl
Sudo apt-get build-dep python-pycurl
Sudo apt-get install libcurl4-openssl-dev
Sudo dpkg-source -x pycurl_7.19.0-4ubuntu3.dsc
cd pycurl-7.19.0
# remove the HAVE_CURL_GNUTLS=1 in the following file
Sudo vim debian/patches/10_setup.py.dpatch
# remove the HAVE_CURL_GNUTLS=1 in the following file
Sudo vim setup.py
# replace all gnutls into openssl in the following file
Sudo vim debian/control
Sudo dpkg-buildpackage -rfakeroot -b
Sudo dpkg -i ../python-pycurl_7.19.0-4ubuntu3_AMD64.deb
9
VonC

J'ai eu ce problème et il m'a fallu un certain temps pour trouver la solution. Je pensais qu'il me manquait un colis quelque part. Je ne voulais pas recompiler Git, étant donné que j'utilisais déjà la dernière version et que j'étais à peu près sûr que le problème n'était pas Git lui-même. 

Mon problème était mon fichier .gitconfig. Le problème ne s'est produit que sur un ancien serveur Linux mis à niveau à plusieurs reprises au fil des années. À un moment donné, pour une raison quelconque, je ne me souviens pas, j'avais explicitement spécifié sslVersion = sslv3 dans mon fichier .gitconfig

Quand j'ai vu cela, l'ampoule s'est allumée, car je sais que SSL V3 est obsolète pour des raisons de sécurité et que la plupart des gens devraient plutôt utiliser TLS. Par exemple, voir RFC 7568, https://tools.ietf.org/html/rfc7568

Donc, mon correctif impliquait soit de supprimer la ligne sslVersion = sslv3 incriminée de mon fichier ~/.gitconfig, soit de changer ceci:

[httpd] 
    sslVersion = sslv3

pour ça:

[httpd]
    sslVersion = tlsv1.2

Supprimer la ligne et laisser Git/libcurl négocier le chiffrement semblait être le meilleur choix, car TLS v1.3 est en préparation et je ne veux plus rencontrer ce problème à l'avenir! 

5
m0j0

Dans mon cas, il semble que je n'utilisais pas de pycurl, la solution ci-dessus ne fonctionnait donc pas pour moi. Le travail de DID était une reconstruction de git-core modifiée pour utiliser openssl au lieu de gnutls.

Les instructions sont ici: 

https://askubuntu.com/questions/186847/error-gnutls-handshake-falied

J'avais substitué "git-core" à "git" dans la plupart des endroits, le fichier .dsc (fichier d'informations sur le paquet?) Apparaissant sous le nom git-core_1.7.0.4-1ubuntu0.2.dsc, et le paquet .deb étant sorti git-core_1.7.0.4-1ubuntu0.2_i386.deb.

4
2NinerRomeo

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

git config --global http.sslVerify false

1
Rick

J'ai eu le même problème lorsque j'ai essayé Sudo git fetch à partir d'un répertoire pour lequel mon propre utilisateur n'avait pas assez de droits. J'ai déplacé le référentiel vers /tmp et poursuivi mon travail.

N'oubliez pas que /tmp est effacé après le redémarrage.

1
simno

Dans mon cas a fonctionné, en mélangeant les solutions de @Rick et @ m0j0

Commencez par exécuter ces commandes:

git config --global http.sslVerify false
git config --global http.sslVerify true

Après avoir ajouté ou modifié ~/.gitconfig

nano ~/.gitconfig

Définissez ceci:

[httpd] 
    sslVersion = sslv3
0
onalbi