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.
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
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:
-
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 installeropenssl-perl
aussi. -
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...
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
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.
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 :)
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.
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.
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 /
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.
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.
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)
- Dans Firefox, allez à la page github (tout)
- cliquez sur l'icône github dans la barre d'adresse pour afficher le certificat
- 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
- 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 )
- (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.
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
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
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é
si vous utilisez un système d'exploitation basé sur debian, vous pouvez simplement exécuter
apt-get install ca-certificates
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
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
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.
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
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.
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
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
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.
j'avais besoin de deux choses:
-
allez à cygwin setup et incluez le paquet" ca-certificats " (il est sous Net) (comme indiqué ailleurs).
-
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 ...
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.
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é!
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é).
- Ouvrez Trousseau D'Accès
- certificats de recherche pour "DigiCert"
- 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.
pour ceux qui utilisent Msys/MinGW GIT, ajouter ce
export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt