Le certificat SSL est rejeté en essayant d'accéder à GitHub via HTTPS derrière le pare-feu

je suis coincé derrière un pare-feu donc je dois utiliser HTTPS pour accéder à mon dépôt 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 j'appuie sur des indicateurs pour obtenir un mot de passe, mais je ne fais rien une fois que je l'ai entré. https://username:<password>github.com/username/ExcelANT.git et cloner la pension vide à partir de zéro mais à chaque fois il me donne la même erreur

erreur: problème de certificat SSL, vérifiez que le certificat CA est OK. Details:

erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: certificat vérifier échoué lors de l'accès à https://github.com/username/ExcelANT.git/info/refs

allumer GIT_CURL_VERBOSE=1 me donne

* sur le point de se connecter () à github.com le port 443 (#0)

* Essayer 207,97,227,239... * établir avec succès les emplacements de vérification des certificats:

* CAfile: aucune

CApath: / usr / ssl / certs

* Problème de certificat SSL, vérifiez que le certificat CA est OK. Details:

erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: certificat vérifier échec

* Expiration affranchie

* Fermeture de la connexion # 0

* Sur le point de se connecter () à github.com port 443 (#0)

* Essayer 207,97,227,239... * vérification réussie des emplacements des certificats:

* CAfile: aucune

CApath: / usr / ssl / certs

* Problème de certificat SSL, vérifiez que le certificat CA est OK. Details:

erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: certificat vérifier échec

* Expiration affranchie

* Connexion de fermeture N ° 0

erreur: problème de certificat SSL, vérifiez que le certificat CA est OK. Details:

erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: certificat vérifier é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 paramétré le proxy HTTP en la configuration Git, cependant 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 scuppered.

366
demandé sur oharab 2010-09-23 13:41:46

28 réponses

N'hésitez pas à sauter cette réponse si vous voulez corriger la question des certificats. Cette réponse traite du tunnel ssh à travers le pare-feu qui est IMHO une meilleure solution pour traiter les choses pare-feu/proxy.

il y a une meilleure façon que d'utiliser l'accès http et c'est d'utiliser le service ssh offert par github sur le port 443 du ssh.github.com serveur.

nous utilisons un outil appelé tire-bouchon. Ceci est disponible pour les deux CygWin (via setup de la page d'accueil de cygwin) et Linux en utilisant votre outil d'empaquetage préféré. Pour MacOSX il est disponible chez macports et brew 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. Le targethost et le targetport est l'emplacement de l'hôte à tunnel. Le fichier authfile est un fichier texte avec 1 ligne contenant le nom d'utilisateur/mot de passe de votre serveur proxy séparé par deux points

E. g:

abc:very_secret

Installation pour l'utilisation "normale" protocole ssh pour git communication

en ajoutant ceci au ~/.ssh/config 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 qu'il fonctionne par SSH-ing à 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:~$

(Note: 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 à celle affichée sur le site github où vous avez téléchargé votre clé).

une petite variante de cette méthode est le cas où vous devez accéder à un dépôt 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

profitez-en!

nous l'utilisons depuis des années sur Linux, Macs et Windows.

si vous voulez que vous pouvez en savoir plus sur ce blog post

55
répondu Peter Tillemans 2018-06-27 21:01:01

le problème est que vous n'avez aucun certificat d'Autorité de Certification installé sur votre système. Et ces certs ne peuvent pas être installés avec la configuration de cygwin.EXE.

mise à Jour: Installer Net/ca-certificates paquet dans cygwin (merci dirkjot)

il y a deux solutions:

  1. installez en fait des certificats racine. Curl guys extraite pour vous certificats de Mozilla .

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

    Voici comment faire. Avec le programme d'installation de cygwin.exe installer les paquets curl et openssl exécuter:

    $ 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_rehash vous devez installer openssl-perl aussi.

  2. ignorer la vérification du certificat SSL.

    avertissement: la désactivation de la vérification du certificat SSL a des implications en matière de sécurité. sans vérification de l'authenticité des connexions SSL/HTTPS, un attaquant malveillant peut usurper l'identité d'un paramètre de confiance (tel que GitHub ou un autre vous serez vulnérable à une attaque "Man-in-the-Middle " . assurez-vous de bien comprendre les questions de sécurité et votre modèle de menace avant d'utiliser cette solution.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
513
répondu Alexey Vishentsev 2018-05-25 13:24:34

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

une façon est de désactiver la vérification SSL CERT:

git config --global http.sslVerify false

cela empêchera CURL to verity la certification HTTPS.

pour un dépôt unique:

git config http.sslVerify false
411
répondu Yi Zhao 2018-05-25 13:27:40

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

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

maintenant mettre à jour .gitconfig 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 pas d'extension de chemin ici, donc vous ne pouvez pas utiliser ~ sans un vilain kludge. Alternativement, vous pouvez sauter le fichier de configuration et définir le chemin via la variable d'environnement GIT_SSL_CAINFO à la place.

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

108
répondu kenchilada 2011-12-11 20:59:16

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 le bouclage de l'installateur RVM dans bash travaillé un trait :)

41
répondu seanp2k 2011-08-18 03:11:17

une solution très simple: remplacer https: / / par git: / /

utiliser git: / / the.dépôt au lieu de https://the.dépôt et fonctionnera.

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

36
répondu klodoma 2013-11-12 15:46:31

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

le problème est que vous n'avez aucune autorité de Certification les certificats installés sur votre système. Et ces certificats ne peuvent pas être installé avec la configuration de cygwin.EXE.

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 à la configuration de cygwin et inclure le paquet "ca-certificats" (il est sous Net). Cela a fait l'affaire pour moi.

31
répondu dirkjot 2012-08-24 10:13:58

je sais que la question originale énumère 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 /

16
répondu Herman J. Radtke III 2011-11-28 22:57:33

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

il peut en être de même pour d'autres distributions.

14
répondu Wayne Walker 2013-07-24 20:59:20

Pour cloner sur windows pendant le réglage SSL vérifier à faux:

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

si vous voulez cloner sans borfing vos paramètres globaux.

14
répondu FlavorScape 2017-11-17 17:03:32

si tout ce que vous voulez faire est d'utiliser le client Cygwin Git avec github.com, il y a une façon beaucoup plus simple sans avoir à passer par les tracas du téléchargement, l'extraction, la conversion, la division des fichiers cert. Procéder comme suit (je suppose Windows XP avec Cygwin et Firefox)

  1. Dans Firefox, allez à la page github (tout)
  2. cliquez sur l'icône github dans la barre d'adresse pour afficher le certificat
  3. cliquez par "Plus d'informations" - > "afficher le certificat" -- > "détails" et sélectionner chaque noeud de la hiérarchie commençant par le plus haut; 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, changez l'extension en .pem et de les déplacer dans le répertoire /usr/ssl/certs dans votre Cygwin installation (Windows: c:\cygwin\ssl\certs )
  5. (optionnel) lancer c_reshash à partir de la bash.

C'est tout.

bien sûr, cela n'installe qu'une seule hiérarchie cert, 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.

13
répondu esquifit 2012-02-17 15:28:27

si vous êtes sur Mac OS X, vous pouvez installer le ca-cert-bundle via homebrew :

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

la formule installe le paquet cert à votre part via:

share.install 'ca-bundle.crt'

la méthode share n'est qu'un alias de /usr/local/share , et le curl-ca-bundle est fourni par Mozilla . C'est ce que vous voyez être mentionné dans beaucoup de problèmes. J'espère que cela vous aidera car ce n'est pas très simple sur la façon d'aborder ce sur Mac OS X. brew install curl ne va pas vous obtenir beaucoup non plus comme il est fût seulement et ne sera pas lié (exécution which curl sera toujours sortie /usr/bin/curl , qui est la valeur par défaut que les navires avec votre OS). Ce poste peut également être d'une certaine valeur .

vous aurez bien sûr besoin de désactiver SSL avant d'installer homebrew car il s'agit d'un git repo. Fais juste ce que curl dit quand il erreurs lors de la vérification SSL et:

$ echo insecure >> ~/.curlrc

une fois que vous avez installé homebrew avec le curl-ca-bundle , supprimez .curlrc et essayez de cloner un repo sur github. S'assurer qu'il n'y a pas d'erreurs et vous serez bon d'aller.

NOTE: si vous avez recours à .curlrc , veuillez l'enlever de votre système au moment où vous avez terminé les tests. Ce fichier peut causer des problèmes majeurs, alors utilisez-le pour temporaire fins et avec prudence. brew doctor se plaindra au cas où vous oubliez de le purger de votre système).

NOTE: si vous mettez à jour votre version de git, vous devrez relire 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, alors tout simplement rediffuser:

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

et tout sera prêt.

enfin si vous avez une nouvelle version de git, en cours d'exécution:

$ 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 conseil que vous devez dire à git où se trouve le Mozilla ca-bundle.

mise à jour:

.curlrc peut être ou non la afin de remédier à votre problème. Dans tous les cas, installez le Mozilla ca-bundle sur votre machine que vous deviez le télécharger manuellement ou non. C'est ce qui est important ici. Une fois que tu as le paquet, tu es prêt à partir. Il suffit d'exécuter la commande de configuration git et de pointer git vers le paquet ca.

mise à JOUR

j'ai récemment dû ajouter:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt à mon .zshenv dot fichier depuis que je suis en utilisant zsh . l'option git config a fonctionné dans la plupart des cas, mais en tapant GitHub sur SSL ( rvm get stable par exemple), j'ai quand même rencontré des problèmes de certificat. @Maverick l'a souligné dans son commentaire, mais juste au cas où quelqu'un le manque ou suppose qu'ils n'ont pas nécessairement besoin d'exporter cette variable d'environnement en plus d'exécuter la commande git config --system.... . Merci et espérons que cette aide.

mise à JOUR

il semble comme le curl-ca-bundle a été récemment retiré de "homebrew . Il y a une recommandation ici .

vous voudrez déposer quelques fichiers dans:

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

8
répondu A-Dubb 2017-05-23 11:33:26

j'ai corrigé ce problème en utilisant apt-cyg (un grand installateur similaire à apt-get) pour téléchargez facilement le ca-certificats (y compris Git et beaucoup plus):

apt-cyg install ca-certificates

Note : apt-cyg doit être installé en premier. Vous pouvez le faire à partir de Windows ligne de commande:

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

fermer les fenêtres cmd, et ouvrir Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
5
répondu sagunms 2015-10-25 03:10:37

sur un rasbery pi j'ai eu

pi@raspbmc:~$ git clone http: / /github.com/andreafabrizi/Dropbox-Uploader .Git Clonage dans "Dropbox-Uploader"... erreur: problème avec le certificat SSL CA (path? les droits d'accès?) tout en accédant à http:// github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: échec de la requête HTTP

si l'id d'une

sudo apt-get install ca-certificates

puis

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

ouvré

4
répondu fred 2014-03-15 16:27:57

si vous utilisez un système d'exploitation basé sur debian, vous pouvez simplement exécuter

apt-get install ca-certificates

4
répondu Patrick 2014-10-28 23:35:17

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ù placer les certificats. Selon / etc/openssl / openssl.cnf, le chemin pour les 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
4
répondu Martin Smith 2015-05-01 15:16:41

essayez d'utiliser un .fichier netrc, il s'authentifie sur https. Créez un appel de fichier .netrc dans votre répertoire personnel et mettez-y:

machine github.com login myusername password mypass

voir ce billet pour plus d'informations:

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

3
répondu Travis Reeder 2012-04-17 23:17:57

améliorer la solution 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
répondu Marshal 2013-12-11 22:54:38

avez-vous vérifié votre heure?

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é que l'une des raisons possibles pour lesquelles les certificats ne passent pas la vérification est que les dates sont erronées (soit la date d'expiration du certificat, ou le Local horloge).

vous pouvez vérifier cela facilement en tapant date dans un terminal. Dans mon cas (un nouveau raspberry Pi), le l'horloge locale a été réglée à 1970, donc un simple ntpdate -u 0.ubuntu.pool.ntp.org a tout arrangé. Pour un rPi, je vous recommande aussi de mettre le script suivant dans un cron quotidien (dire /etc/cron.daily/ntpdate ):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
3
répondu Deiu 2015-03-11 03:44:09

j'ai rencontré le même problème pour configurer Git sur une plate-forme 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écharger la dernière version sur le site télécharger la page de curl et suivre la procédure d'installation procédure D'Installation de curl

  • récupérer le certificat de l'autorité qui délivre le certificat pour le serveur.

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

  • configurer Git pour utiliser ce fichier de certificats en éditant le .gitconfig file et définit le chemin sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • sur la ordinateur client, vous devez obtenir le certificat et configurer le .gitconfig fichier trop.

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

2
répondu G. Pfeiffer 2013-07-24 20:55:55

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 corrigé le problème

%systemroot % \system32\drivers\etc\hosts

1
répondu GenericEventHandler 2016-07-19 08:09:29

j'ai simplement désactivé L'authentification du certificat SSL et j'ai utilisé le nom d'utilisateur simple login mot de passe comme indiqué ci-dessous enter image description here

1
répondu aabdulwahed 2017-04-16 08:54:48

j'avais besoin des certificats juste pour Cygwin et git alors j'ai fait ce que @esquifit a posté. Cependant, j'ai eu à exécuter l'étape 5 manuellement, c_rehash n'était pas disponible sur mon système. J'ai suivi ce guide: installer des certificats CA dans le cadre D'OpenSSL à la place.

0
répondu Sonata 2011-10-17 10:38:06

j'avais besoin de deux choses:

  1. allez à cygwin setup et incluez le paquet" ca-certificats " (il est sous Net) (comme indiqué ailleurs).

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

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

    (L'option verbeuse n'est pas nécessaire)

    ou stockage permanent de l'option:

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

    git ...

0
répondu user2896631 2013-10-18 23:18:29

j'ai eu le même problème. L'importation de certificats ou la commande de désactiver la vérification ssl n'a pas fonctionné. Il s'avère que c'est un mot de passe périmé pour réseau proxy. Il y a eu l'entrée de la configuration par procuration. dans l' .gitconfig fichier présent dans mon profil d'utilisateur windows. Je viens de supprimer toute l'entrée et il a commencé à fonctionner à nouveau.

-2
répondu sap 2013-12-16 09:00:26

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

ssh -T git@github.com

puis j'ai finalement remarqué encore un autre format d'url pour les remotes. J'ai essayé les autres, et ils n'ont pas de travail. http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

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

-2
répondu AnneTheAgile 2014-02-02 22:32:01

j'ai récemment (juil.2014) eu un problème similaire et j'ai trouvé sur OS X (10.9.4) qu'il y avait un certificat" DigiCert High Assurance EV Root CA " qui était expiré (bien que j'en ai eu un autre qui n'était pas encore arrivé).

  1. Ouvrez Trousseau D'Accès
  2. certificats de recherche pour "DigiCert"
  3. voir menu > Afficher les certificats expirés

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

Espérons que cette aide.

-2
répondu craigb 2014-07-28 17:11:10

pour ceux qui utilisent Msys/MinGW GIT, ajouter ce

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
-2
répondu John Chain 2014-09-22 18:01:34