Certificat SSL rejeté essayant d'accéder à GitHub via HTTPS derrière le pare-feu


390

Je suis coincé derrière un pare-feu, je dois donc utiliser HTTPS pour accéder à mon référentiel GitHub. J'utilise cygwin 1.7.7 sur Windows XP.

J'ai essayé de régler la télécommande sur https://username@github.com/username/ExcelANT.git, mais en poussant les invites pour un mot de passe, mais je ne fais rien une fois que je l'ai entré. https://username:<password>github.com/username/ExcelANT.gitet cloner le dépôt vide à partir de zéro, mais à chaque fois, cela me donne la même erreur

erreur: problème de certificat SSL, vérifiez que le certificat CA est OK. Détails:
erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: la vérification du certificat a échoué lors de l'accès à https://github.com/username/ExcelANT.git/info/refs

Allumer GIT_CURL_VERBOSE=1me donne

* À propos de se connecter () au port github.com 443 (# 0)
* Essayer 207.97.227.239 ... * définir avec succès les emplacements de vérification des certificats:
* CAfile: aucun
CApath: / usr / ssl / certs
* Problème de certificat SSL, vérifier que le certificat CA est OK. Détails:
erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: échec de la vérification du certificat
* expiration effacée
* fermeture de la connexion # 0
* sur le point de se connecter () au port github.com 443 (# 0)
* tentative 207.97.227.239 ... * tentative de configuration réussie du certificat vérifiez les emplacements:
* CAfile: aucun
CApath: / usr / ssl / certs
* Problème de certificat SSL, vérifiez que le certificat CA est OK. Détails:
erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: échec de la vérification du certificat
* Expiration effacée
* Fermeture de la connexion # 0
erreur: problème de certificat SSL, vérifiez que le certificat CA est OK. Détails:
erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: la vérification du certificat a échoué lors de l'accès à https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

Est-ce un problème avec mon pare-feu, cygwin ou quoi?

Je n'avais pas défini le proxy HTTP dans la configuration Git, mais c'est un serveur ISA qui a besoin d'une authentification NTLM, pas basique, donc à moins que quelqu'un sache comment forcer git à utiliser NTLM, je suis saboté.


Si je mets http.sslVerify sur false, la connexion sera-t-elle sécurisée? et c'est un bon chemin à utiliser? Entre les deux, nous utilisons le pare-feu pfsense. en ce moment, le fichier .gitconfig sur le profil utilisateur est vide.
Nullpointer

Réponses:


57

N'hésitez pas à ignorer cette réponse si vous souhaitez résoudre le problème des certificats. Cette réponse traite du tunneling ssh à travers le pare-feu, ce qui est à mon humble avis une meilleure solution pour traiter les pare-feu / proxy.

Il existe un meilleur moyen que d'utiliser l'accès http et c'est d'utiliser le service ssh offert par github sur le port 443 du serveur ssh.github.com.

Nous utilisons un outil appelé tire-bouchon. Ceci est disponible pour CygWin (via la configuration à partir de la page d'accueil de cygwin) et Linux à l'aide de votre outil d'emballage préféré. Pour MacOSX, il est disponible auprès de macports et infuser au moins.

La ligne de commande est la suivante:

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

Le proxyhost et le proxyport sont les coordonnées du proxy https. L'hôte cible et le port cible sont l'emplacement de l'hôte vers lequel effectuer le tunnel. Le fichier d'authentification est un fichier texte avec 1 ligne contenant votre nom d'utilisateur / mot de passe de serveur proxy séparés par deux points

par exemple:

abc:very_secret

Installation pour utiliser le protocole ssh "normal" pour la communication git

En ajoutant ceci à l' ~/.ssh/configastuce, cette astuce peut être utilisée pour les connexions ssh normales.

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

maintenant, vous pouvez tester son fonctionnement par ssh-ing vers 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:~$

(Remarque: si vous ne vous êtes jamais connecté à github auparavant, ssh vous demandera d'ajouter la clé du serveur au fichier hosts connu. Si vous êtes paranoïaque, il est recommandé de vérifier l'empreinte RSA par rapport à celle affichée sur le site github où vous téléchargé votre clé).

Une légère variante de cette méthode est le cas lorsque vous devez accéder à un référentiel avec une autre clé, par exemple pour séparer votre compte privé de votre compte professionnel.

# 
# 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

prendre plaisir!

Nous l'utilisons depuis des années sur Linux, Mac et Windows.

Si vous le souhaitez, vous pouvez en savoir plus à ce sujet dans ce billet de blog


J'ai renoncé à faire fonctionner ça, mais j'ai revu ça et je l'ai fait fonctionner. le changement de .ssh / config en> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa et le clonage à l'aide de git clone l'ont git@ssh.github.com:oharab/log4vba.gitmis en place en un rien de temps.
oharab

1
Je ne vote que parce que la réponse ci-dessous est plus utile mais malheureusement, stackoverflow place toujours la réponse acceptée en haut, même si ce n'était qu'une réponse pour une seule circonstance.
mjaggard

1
Dans tous les cas, j'ai mis à jour la réponse car je trouve que le tunnel SSL via le proxy https est toujours une meilleure solution que de jouer avec les certificats HTTPS ou de les désactiver et de se retrouver avec une solution toujours moins performante, conviviale ET moins sécurisée. Eh bien, beaucoup de votes positifs me prouvent que je me trompe, mais je m'en tiens à mon avis de toute façon.
Peter Tillemans

523

Le problème est que vous n'avez aucun certificat d'autorité de certification installé sur votre système. Et ces certificats ne peuvent pas être installés avec setup.exe de cygwin.

Mise à jour: Installez le package Net / ca-certificats dans cygwin (merci dirkjot)

Il existe deux solutions:

  1. Installez réellement les certificats racine. Curl guys extrait pour vous les certificats de Mozilla .

    cacert.pemfichier est ce que vous recherchez. Ce fichier contient> 250 certificats CA (je ne sais pas comment faire confiance à ce nombre de personnes). Vous devez télécharger ce fichier, le diviser en certificats individuels, les placer dans / usr / ssl / certs (votre CApath) et les indexer.

    Voici comment faire. Avec cygwin setup.exe, installez les packages curl et openssl:

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash

    Important : Pour utiliser, c_rehashvous devez openssl-perlégalement installer .

  2. Ignorez la vérification du certificat SSL.

    AVERTISSEMENT: la désactivation de la vérification des certificats SSL a des implications sur la sécurité. Sans vérification de l'authenticité des connexions SSL / HTTPS, un attaquant malveillant peut usurper l'identité d'un point de terminaison de confiance (tel que GitHub ou un autre hôte Git distant), et vous serez vulnérable à une attaque Man-in-the-Middle . Assurez-vous de bien comprendre les problèmes de sécurité et votre modèle de menace avant de l'utiliser comme solution.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    

9
Vous n'avez pas besoin d'installer curl, utilisez simplement 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
Je sais que c'est cygwin, mais si quelqu'un arrive ici en utilisant Centos, c'est / etc / pki / tls / certs où les .pem devraient aller.
Arrêtez de calomnier Monica Cellio

2
Cela n'a pas fonctionné pour moi - cependant, je n'ai pas c_rehash sur mon chemin. J'ai essayé de redémarrer mon shell. J'ai également dû mkdir -p / usr / ssl / certs. Je me demande si mon installation Cygwin est différente ou s'il manque quelque chose? En outre, la définition de GIT_SSL_NO_VERIFY = true suivie de l'exécution de l'opération de clonage a entraîné cette erreur: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?peut - être que cela fonctionnera après le redémarrage?
Jeff Axelrod

7
Cette réponse est fausse. Installez simplement le ca-certificatespaquet cygwin pour obtenir les certificats racine manquants. Pourquoi cette réponse a-t-elle eu autant de succès?
rurban

32
Ne désactivez pas la vérification des certificats SSL. Cela arrive trop souvent dans les outils et le code d'application dans l'industrie. Cela vous ouvre à un homme au milieu de l'attaque. Si vous allez utiliser SSL, utilisez-le correctement.
Tim

430

Remarque: la désactivation de la vérification SSL a des implications sur la sécurité . Il permet à Man in the Middle d'attaquer lorsque vous utilisez Git pour transférer des données sur un réseau. Assurez-vous de bien comprendre les implications de sécurité avant de l'utiliser comme solution. Ou mieux encore, installez les certificats racine.

Une façon consiste à désactiver la vérification SSL CERT:

git config --global http.sslVerify false

Cela empêchera CURL de vérifier la certification HTTPS.

Pour un seul référentiel:

git config http.sslVerify false

17
Si vous ne souhaitez pas modifier vos paramètres globaux (par exemple, tous les référentiels), excluez --global
Erin

57
pourriez-vous s'il vous plaît ajouter une note sur la façon dont cela est extrêmement dangereux?
Chronial

26
c'est une terrible idée. il y a une raison pour laquelle les certificats doivent être vérifiés. si vous ne vérifiez pas que le certificat est de confiance, le certificat pourrait être généré par n'importe qui et vous pourriez être sensible à un homme au milieu de l'attaque.
Mark Carey

24
Ne désactivez pas la vérification SSL!
Tim

14
Pour toutes les personnes "ne le faites pas": Bien sûr, ce n'est pas du tout l'approche la plus sûre. MAIS, c'est une bien meilleure option que de ne pas avoir SSL du tout! Parce que certaines personnes exécutent uniquement leurs serveurs git simples privés, cela leur convient. Bien sûr, pour toute sécurité réelle, ce n'est PAS un paramètre GO. La chose la moins sûre est d'envoyer les octets simples à travers le réseau.
Peter Stegnar

109

Je voulais que Git utilise le paquet de certificats mis à jour sans remplacer celui que tout mon système utilise. Voici comment demander à Git d'utiliser un fichier spécifique dans mon répertoire personnel:

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

Maintenant, mettez .gitconfigà jour pour l'utiliser pour la vérification par les pairs:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

Notez que j'utilise un chemin absolu. Git ne fait aucune extension de chemin ici, donc vous ne pouvez pas l'utiliser ~sans un vilain coup de coude. Alternativement, vous pouvez ignorer le fichier de configuration et définir le chemin via la variable d'environnement à la GIT_SSL_CAINFOplace.

Pour résoudre ce problème, définissez GIT_CURL_VERBOSE=1. Le chemin du fichier CA utilisé par Git sera affiché sur les lignes commençant par "CAfile:" dans la sortie.


12
Pour moi, c'est la meilleure réponse: cela fonctionne sur unix (NetBSD en fait), cela n'affecte que git et rien d'autre sur le système, et il ne nécessite pas d'accès root / administrateur. Merci!
Eric

1
Parfait, on peut même faire mieux. J'ai remplacé mon ancien /etc/ssl/certs/ca-certificates.crtsur mon Ubuntu 8.04 LTS par ce fichier et cela a fonctionné comme par magie!
Michael-O

1
@Eric merci d'avoir mentionné NetBSD car cela signifie que j'ai trouvé cette réponse. NetBSD est un peu étrange. J'ai installé le paquet OpenSSL, mais même cela ne vous donne pas les certificats, juste un répertoire d'espace réservé.
atomicules

+200 Plus génial, cela a également fonctionné sur ma boîte Ubuntu. Pas besoin de désactiver la vérification des certificats dans git, faites simplement cette solution rapide.
Colin D Bennett

11
Excellente réponse, vous pouvez ignorer l'édition manuelle du fichier ~ / .gitconfig avec la commande suivante:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Aron Ahmadia

41

Notez que pour que cela fonctionne (installation RVM sur CentOS 5.6), j'ai dû exécuter ce qui suit:

export GIT_SSL_NO_VERIFY=true

et après cela, la procédure d'installation standard pour curling l'installateur RVM dans bash a fonctionné un régal :)


13
même effet que git config --global http.sslverify false
Dyno Fu

20
C'est EXTRÊMEMENT DANGEREUX! L'intérêt de la vérification du certificat SSL est de protéger votre code contre toute falsification lorsque vous le transmettez via HTTPS! La désactiver signifie que des personnes malveillantes peuvent insérer des vulnérabilités et d'autres choses désagréables dans votre code lorsque vous le poussez et le récupérez!

Si je mets http.sslVerify sur false alors la connexion sera sécurisée? et c'est un bon chemin à utiliser? Entre les deux, nous utilisons le pare
pfsense

@Ravi la connexion fonctionnera techniquement , oui, mais ce n'est pas une bonne idée. Si votre origine git et la machine locale sont internes et sous le contrôle de votre organisation, cela peut être passable , mais selon le commentaire de user456814, la désactivation de la vérification vous ouvre aux attaques MITM.
Doktor J

40

Une solution très simple: remplacez https: // par git: //

Utilisez git: //the.repository au lieu de https: //the.repository et cela fonctionnera.

J'ai eu ce problème sur Windows avec TortoiseGit et cela l'a résolu.


Je suppose que cela fonctionne car il ne vérifie pas ssl git://. Comme indiqué dans cette réponse ci - dessus , la désactivation de la vérification SSL est un risque pour la sécurité.
danijar

5
@danijar la raison pour laquelle cela fonctionne est parce qu'il n'utilise même pas du tout SSL . Le git://protocole utilise SSH, qui utilise des paires de clés publiques et privées SSH pour l'authentification et le chiffrement, au lieu d'un certificat SSL.

11
@Cupcake git://n'utilise pas SSH. Voir Le protocole SSH et le protocole Git .
nyuszika7h

@ nyuszika7h oh, tu as raison. Je continue à me git://confondre avec git@github.com:user/project.git, qui est la syntaxe SCP-ish .

31

Comme la réponse la plus populaire (par Alexey Vishentsev) l'a:

Le problème est que vous n'avez aucun certificat d'autorité de certification installé sur votre système. Et ces certificats ne peuvent pas être installés avec setup.exe de cygwin.

Cependant, cette dernière affirmation est fausse (maintenant, ou a toujours été, je ne sais pas).

Tout ce que vous avez à faire est d'aller dans la configuration de cygwin et d'inclure le paquet 'ca-certificats' (il est sous Net). Cela a fait l'affaire pour moi.


1
L'erreur cygwin git s'affiche CAfile: /etc/ssl/ca-bundle.crtalors que le package cygwin ca-certificats s'installe /usr/ssl/certs/ca-bundle.crt. Par conséquent, a dû modifier ~/.gitconfigpour spécifier l'emplacement: [http]puissslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk

@maxpolk: J'aurais fait un lien mais l'effet est le même. Il s'agit clairement d'un bug dans cygwin git, avez-vous envisagé de lever un ticket? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot

À partir d'aujourd'hui 2013-5-23, cygwin git fonctionne très bien sur https: si vous avez également / n'oubliez pas d'installer cygwin ca-certificates.
bobbogo

Je suis arrivé ici de cette question , qui a indiqué qu'une réponse peut être trouvée ici. Cependant, ni la réponse liée ni cette réponse ne fonctionnent pour moi; TortoiseSVN continue de produireerror: SSL certificate problem, verify that the CA cert is OK.
OR Mapper

Où installer exactement les fichiers d'installation de cygwin depuis le gestionnaire de paquets? Les certificats CA doivent-ils se trouver dans le dossier bin de Git?
221b du

16

Je connais la liste de questions d'origine Cygwin, mais voici la solution pour CentOS:

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

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


Cela a très bien fonctionné pour moi; vous devriez probablement faire une sauvegarde de l'original d'abord, comme le suggère l'OP. Il semble que cela se produise lorsque Github renouvelle son certificat, si vous êtes sur un système qui en a un plus ancien.
Evan Donovan

Sur CentOS 5, je l'ai corrigé par yum update openssl, ce qui met également à jour le ca-bundle.
raarts

si vous allez suivre cette option, vous devez vérifier le hachage SHA-256 du fichier avant de l'utiliser. Vous pouvez obtenir la somme sha256 pour le fichier actuel par un autre moyen que la boucle que vous configurez (comme un navigateur sur une machine différente qui est déjà configurée en toute sécurité), puis la comparer à la sortie de sha256sum /etc/pki/tls/certs/ca-bundle.crtpour être sûr que vous avez obtenu le bon fichier.
kbolino

16

Pour cloner sur Windows tout en définissant la vérification SSL sur false:

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

Si vous souhaitez cloner sans modifier vos paramètres globaux.


14

Sur CentOS 5.x, un simple yum update opensslpaquet mis à jour openssl qui a mis à jour le ca-bundle.crtfichier système et résolu le problème pour moi.

La même chose peut être vraie pour d'autres distributions.


Miam! Cela a fonctionné pour moi pour une ancienne installation (4.1.2) de Linux Red Hat. Merci!
Josh

13

Si tout ce que vous voulez faire est simplement d'utiliser le client Cygwin git avec github.com, il existe un moyen beaucoup plus simple sans avoir à passer par les tracas du téléchargement, de l'extraction, de la conversion et du fractionnement des fichiers cert. Procédez comme suit (je suppose que Windows XP avec Cygwin et Firefox)

  1. Dans Firefox, accédez à la page github (n'importe laquelle)
  2. cliquez sur l'icône github dans la barre d'adresse pour afficher le certificat
  3. Cliquez sur "plus d'informations" -> "afficher le certificat" -> "détails" et sélectionnez chaque nœud de la hiérarchie en commençant par le plus élevé; pour chacun d'eux cliquez sur "Exporter" et sélectionnez le format PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Enregistrez les fichiers ci-dessus quelque part dans votre lecteur local, modifiez l'extension en .pem et déplacez-les vers / usr / ssl / certs dans votre installation Cygwin (Windows: c: \ cygwin \ ssl \ certs)
  5. (facultatif) Exécutez c_reshash à partir de bash.

C'est ça.

Bien sûr, cela n'installe qu'une seule hiérarchie de certificats, celle dont vous avez besoin pour github. Vous pouvez bien sûr utiliser cette méthode avec n'importe quel autre site sans avoir à installer 200 certs de sites auxquels vous ne faites pas (nécessairement) confiance.


8

Si vous êtes sous Mac OS X, vous pouvez installer le paquet ca-cert via homebrew:

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

La formule installe l'ensemble de certificats sur votre partage via:

share.install 'ca-bundle.crt'

La shareméthode n'est qu'un alias /usr/local/shareet le paquet curl-ca est fourni par Mozilla. C'est ce que vous voyez être référencé dans beaucoup de problèmes. J'espère que cela aide, car il n'est pas très simple de savoir comment aborder cela sur Mac OS X. brew install curlne vous apportera pas grand-chose non plus, car il ne s'agit que d'un fût et ne sera pas lié (l'exécution which curlsera toujours sortie /usr/bin/curl, qui est la valeur par défaut fournie avec votre OS). Ce message peut également avoir une certaine valeur .

Vous devrez bien sûr désactiver SSL avant de l'installer homebrewcar il s'agit d'un dépôt git. Faites ce que curl dit quand il fait une erreur lors de la vérification SSL et:

$ echo insecure >> ~/.curlrc

Une fois que vous êtes homebrewinstallé avec curl-ca-bundle, supprimez .curlrcet essayez de cloner un dépôt sur github. Assurez-vous qu'il n'y a pas d'erreurs et vous serez prêt à partir.

REMARQUE: Si vous y avez recours .curlrc, veuillez le supprimer de votre système au moment où vous avez terminé les tests. Ce fichier peut provoquer des problèmes majeurs, alors utilisez-le à des fins temporaires et avec prudence. brew doctorse plaindra au cas où vous oublieriez de le purger de votre système).

REMARQUE: si vous mettez à jour votre version de git, vous devrez réexécuter cette commande car vos paramètres système seront effacés (ils sont stockés par rapport au binaire git basé sur la version).

Donc après avoir couru:

$ brew update
$ brew upgrade

Si vous obtenez une nouvelle version de git, réexécutez simplement:

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

Et vous serez prêt.

Enfin, si vous avez une nouvelle version de git, exécutez:

$ git config -l --system

devrait vous donner une erreur dans le sens de

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

c'est votre astuce dont vous avez besoin pour dire à git où se trouve le ca-bundle Mozilla.

MISE À JOUR:

.curlrcpeut ou non être le remède à votre problème. Dans tous les cas, installez simplement le ca-bundle Mozilla sur votre machine, que vous deviez le télécharger manuellement ou non. Voilà ce qui est important ici. Une fois que vous obtenez le ca-bundle, vous êtes prêt à partir. Exécutez simplement la commande git config et pointez git vers le ca-bundle.

MISE À JOUR

J'ai récemment dû ajouter:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crtà mon .zshenvfichier dot depuis que j'utilise zsh. l' git configoption a fonctionné dans la plupart des cas, mais lorsque rvm get stableje clique sur github via SSL ( par exemple), je rencontre toujours des problèmes de certificat. @Maverick l'a souligné dans son commentaire, mais juste au cas où quelqu'un le manquerait ou supposerait qu'il n'a pas nécessairement besoin d'exporter cette variable d'environnement en plus d'exécuter legit config --system.... commande. Merci et j'espère que cela vous aidera.

MISE À JOUR

Il semble que le paquet curl-ca ait été récemment supprimé de l'homebrew . Il y a une recommandation ici .

Vous voudrez déposer certains fichiers dans:

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


1
Vous pouvez également essayer ce qui suit: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick

Salut, j'ai un problème similaire ( stackoverflow.com/questions/20939105/… ) et le même problème apparaît lorsque j'essaie d'installer Home-Brew. Que puis-je faire dans ce cas? Taper "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" dans ma console renvoie "erreur: impossible de verrouiller le fichier de configuration /Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig: Aucun fichier ou répertoire de ce type ". Merci de votre aide!
Mathieu

@Mathieu c'est assez étrange. Il semble que votre système pointe vers une version de git par rapport à XCode. Quelle est la sortie de l'exécution de 'which git' depuis votre terminal?
A-Dubb

7

Vous pouvez essayer cette commande dans le terminal :

git config --global http.sslVerify false


5

J'ai résolu ce problème en utilisant apt-cyg (un excellent programme d'installation similaire à apt-get) pour télécharger facilement les certificats ca (y compris Git et bien d'autres):

apt-cyg install ca-certificates

Remarque : apt-cyg doit d'abord être installé. Vous pouvez le faire à partir de la ligne de commande Windows:

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

Fermez Windows cmd et ouvrez Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin

Cela n'a pas fonctionné pour moi - je reçois toujours la même erreur.
holdenlee

4

sur un rasbery pi j'avais

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonage dans 'Dropbox-Uploader' ... erreur: problème avec le certificat SSL CA (chemin? droits d'accès?) lors de l'accès http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: la requête HTTP a échoué

donc id un

sudo apt-get install ca-certificates

puis

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

travaillé


4

Si vous avez utilisé un système d'exploitation basé sur Debian, vous pouvez simplement exécuter

apt-get install ca-certificats


4

J'ai eu ce même problème pour Solaris Express 11. Cela m'a pris du temps mais j'ai réussi à trouver où les certificats devaient être placés. Selon /etc/openssl/openssl.cnf, le chemin des certificats est / etc / openssl / certs. J'ai placé les certificats générés en utilisant les conseils ci-dessus d'Alexey.

Vous pouvez vérifier que les choses fonctionnent en utilisant openssl sur la ligne de commande:

openssl s_client -connect github.com:443

3

Essayez d'utiliser un fichier .netrc, il s'authentifiera via https. Créez un appel de fichier .netrcdans votre répertoire personnel et mettez-le dedans:

machine github.com login myusername password mypass

Voir cet article pour plus d'informations:

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


Il s'agit d'un problème de validation de certificat, pas d'un problème d'authentification - certains systèmes d'exploitation (y compris celui que l'OP exécute) n'ont pas le nouveau certificat émis par l'autorité de certification github inclus dans la liste de stock.
Charles Duffy

3

Améliorez la solution de RouMao en désactivant temporairement la vérification GIT / curl ssl dans Windows cmd:

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

La bonne chose à propos de cette solution est qu'elle ne prend effet que dans la fenêtre cmd actuelle.


3
C'est EXTRÊMEMENT DANGEREUX! L'intérêt de la vérification du certificat SSL est de protéger votre code contre toute falsification lorsque vous le transmettez via HTTPS! La désactiver signifie que des personnes malveillantes peuvent insérer des vulnérabilités et d'autres choses désagréables dans votre code lorsque vous le poussez et le récupérez!

3

Avez-vous vérifié votre temps?

J'ai absolument refusé de rendre mes opérations git peu sûres et après avoir essayé tout ce que les gens ont mentionné ici, il m'a frappé qu'une des raisons possibles pour lesquelles les certificats ne réussissent pas la vérification est que les dates sont incorrectes (soit la date d'expiration du certificat, soit la date locale). horloge ).

Vous pouvez le vérifier facilement en tapant dateun terminal. Dans mon cas (un nouveau Raspberry Pi), l'horloge locale a été réglée sur 1970, donc un simple a ntpdate -u 0.ubuntu.pool.ntp.orgtout réglé. Pour un rPi, je recommanderais également de mettre le script suivant dans un travail cron quotidien (disons /etc/cron.daily/ntpdate):

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

3

Générez le jeton d'accès à partir de Github et enregistrez-le, car il n'apparaîtra plus.

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

ou,

git config --global http.sslVerify false
git clone https://github.com/repo.git

2

J'ai rencontré le même problème pour configurer Git sur une plateforme de développement collaboratif que je dois gérer.

Pour le résoudre:

  • J'ai mis à jour la version de Curl installée sur le serveur. Téléchargez la dernière version sur le site Web Téléchargez la page de curl et suivez les procédures d'installation Procédure d' installation de curl

  • Récupérez le certificat de l'autorité qui délivre le certificat pour le serveur.

  • Ajoutez ce certificat au fichier CAcert utilisé par curl. Sur mon serveur, il est situé dans /etc/pki/tls/certs/ca-bundle.crt.

  • Configurez git pour utiliser ce fichier de certificat en modifiant le fichier .gitconfig et définissez le chemin sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • Sur la machine cliente, vous devez obtenir le certificat et configurer également le fichier .gitconfig.

J'espère que cela aidera certains d'entre vous.


1

J'ai tout essayé, finalement j'ai regardé dans le fichier hosts et il y avait une entrée aléatoire pour github. La suppression de l'alias a résolu le problème

% systemroot% \ system32 \ drivers \ etc \ hosts


1

J'ai simplement désactivé l'authentification par certificat SSL et utilisé la simple connexion par mot de passe du nom d'utilisateur comme indiqué ci-dessousentrez la description de l'image ici



0

J'avais besoin de deux choses:

  1. allez dans la configuration de cygwin et incluez le paquet ' ca-certificats ' (il est sous Net) (comme indiqué ailleurs).

  2. Dites à git où trouver les certificats installés:

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

    (L'option détaillée n'est pas nécessaire)

    Ou en stockant l'option en permanence:

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

    git ...


-2

J'ai eu le même problème. L'importation de certificat ou la commande pour annuler la vérification SSL n'a pas fonctionné. Il s'avère que le mot de passe est expiré pour le proxy réseau. Il y avait entrée de la configuration du proxy. dans le fichier .gitconfig présent dans mon profil utilisateur Windows. Je viens de supprimer l'entrée entière et elle a recommencé à fonctionner.


-2

Sur un système Mac OSX 10.5, j'ai pu faire fonctionner cela avec une méthode simple. Tout d'abord, exécutez les procédures github et le test, qui ont bien fonctionné pour moi, montrant que mon certificat était en fait correct. https://help.github.com/articles/generating-ssh-keys

ssh -T git@github.com

Puis j'ai finalement remarqué un autre format d'URL pour les télécommandes. J'ai essayé les autres, ci-dessus et ils n'ont pas fonctionné. http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

Un simple "git push myRemoteName" a très bien fonctionné!


-2

J'ai récemment (juillet 2014) rencontré un problème similaire et découvert sur OS X (10.9.4) qu'un certificat "DigiCert High Assurance EV Root CA" avait expiré (même si j'en avais un autre non expiré également).

  1. Accès au trousseau ouvert
  2. rechercher des certificats pour "DigiCert"
  3. Menu Affichage> Afficher les certificats expirés

J'ai trouvé deux certificats nommés "DigiCert High Assurance EV Root CA", l'un expirant en novembre 2031 et celui expiré en juillet 2014 (quelques jours auparavant). La suppression du certificat expiré a résolu le problème pour moi.

J'espère que cela t'aides.


-2

Pour ceux qui utilisent Msys / MinGW GIT, ajoutez ceci

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.