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://[email protected]/username/ExcelANT.git
, mais le fait d'introduire une invite demande un mot de passe, mais ne fait rien après l'avoir entré. https://username:<password>github.com/username/ExcelANT.git
et cloner le référentiel 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 d'autorité de certification 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=1
me donne
* A propos de la connexion () au port 443 de github.com (# 0)
* Essayer 207.97.227.239 ... * définir avec succès les emplacements de vérification de certificat:
* CAfile: aucun
CApath:/usr/ssl/certs
* Problème de certificat SSL, vérifiez que le certificat de certification est OK. Détails:
erreur: 14090086: Routines SSL: SSL3_GET_SERVER_CERTIFICATE: échec de la vérification du certificat
* Expire effacé
* Fermeture de la connexion n ° 0
* A propos de la connexion () au port 443 de github.com (# 0)
* Essayer 207.97.227.239 ... * définir avec succès les emplacements de vérification de certificat:
* CAfile: aucun
CApath:/usr/ssl/certs
* Problème de certificat SSL, vérifiez que le certificat de certification est OK. Détails:
erreur: 14090086: Routines SSL: SSL3_GET_SERVER_CERTIFICATE: échec de la vérification du certificat
* Expire effacé
* Fermeture de la connexion n ° 0
erreur: problème de certificat SSL, vérifiez que le certificat de certification 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 de Git, mais c'est un serveur ISA qui a besoin d'une authentification NTLM, et non de base. Par conséquent, à moins que quelqu'un sache comment forcer git à utiliser NTLM, je suis trompé.
N'hésitez pas à ignorer cette réponse si vous souhaitez résoudre le problème des certificats. Cette réponse traite de la tunnelisation de ssh à travers le pare-feu, ce qui est à mon humble avis une meilleure solution pour traiter les problèmes de pare-feu/proxy.
Il existe un meilleur moyen que d'utiliser un accès http: utiliser le service ssh proposé 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 depuis la page d’accueil de cygwin) et Linux en utilisant votre outil d’emballage préféré. Pour MacOSX, il est disponible sur macports et brassez au moins.
La ligne de commande est la suivante:
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>
Proxyhost et proxyport sont les coordonnées du proxy https. Targethost et targetport est l'emplacement de l'hôte vers lequel effectuer le tunnel. Authfile est un fichier texte avec 1 ligne contenant le nom d'utilisateur/mot de passe de votre serveur proxy séparé par un signe deux-points
par exemple:
abc:very_secret
Installation pour utiliser le protocole "normal" ssh pour la communication git
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 cela fonctionne en 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:~$
(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 sur celle indiquée sur le site github où vous vous trouvez. 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 sous Linux, Mac et Windows.
Si vous voulez, vous pouvez en savoir plus dans cet article
Le problème est qu'aucun certificat d'autorité de certification n'est installé sur votre système. Et ces certificats ne peuvent pas être installés avec le fichier setup.exe de cygwin.
Mise à jour: paquet d'installation Net/ca-certificates dans cygwin (merci dirkjot)
Il y a deux solutions:
Installe réellement les certificats racine. Les gars Curl extraits pour vous des certificats de Mozilla .
Le fichier cacert.pem
est ce que vous recherchez. Ce fichier contient plus de 250 certificats de certification (vous ne savez pas comment faire confiance à ce nombre de ppl). Vous devez télécharger ce fichier, le diviser en certificats individuels, les placer dans/usr/ssl/certs (votre chemin CA) et les indexer.
Voici comment faire. Avec cygwin setup.exe, les paquets install curl et openssl sont exécutés:
$ 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 également installer openssl-Perl
.
Ignorer la vérification du certificat SSL.
AVERTISSEMENT: la désactivation de la vérification du certificat SSL entraîne des problèmes de sécurité. Sans vérification de l'authenticité des connexions SSL/HTTPS , un attaquant malveillant peut emprunter l'identité d'un ordinateur d'extrémité de confiance (tel que GitHub ou un autre hôte Git distant), et vous serez vulnérable à une attaque Attaque au milie . 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...
Remarque: la désactivation de la vérification SSL a des implications sur la sécurité. Il permet des attaques Man in the Middle lorsque vous utilisez Git pour transférer des données sur un réseau. Assurez-vous de bien comprendre les implications en termes de sécurité avant d’utiliser cette solution. Ou mieux encore, installez les certificats racine.
Une solution 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
Je voulais que Git utilise le groupe de certificats mis à jour sans remplacer celui utilisé par tout mon système. Voici comment faire en sorte 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, mettez à 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 développe pas de chemin ici, vous ne pouvez donc pas utiliser ~
sans un vilain kludge. Vous pouvez également ignorer le fichier de configuration et définir le chemin via la variable d'environnement GIT_SSL_CAINFO
.
Pour résoudre ce problème, définissez GIT_CURL_VERBOSE=1
. Le chemin du fichier CA utilisé par Git sera indiqué sur les lignes commençant par "CAfile:" dans la sortie.
Notez que pour que cela fonctionne (installation de RVM sur CentOS 5.6), j’ai dû exécuter les éléments suivants:
export GIT_SSL_NO_VERIFY=true
et après cela, la procédure d'installation standard permettant à l'installateur de RVM de se courber en bash a fonctionné comme une gâton :)
Une solution très simple: remplace https: // par git: //
Utilisez git: //the.repository au lieu de https: //the.repository et fonctionnera.
J'ai eu ce problème sous Windows avec TortoiseGit et cela l'a résolu.
La réponse la plus populaire (par Alexey Vishentsev) l'indique:
Le problème est qu'aucun certificat d'autorité de certification n'est installé sur votre système. Et ces certificats ne peuvent pas être installés avec le fichier setup.exe de cygwin.
Cependant, cette dernière affirmation est fausse (maintenant ou depuis toujours, je ne sais pas).
Tout ce que vous avez à faire est d'aller dans la configuration de cygwin et d'inclure le paquet 'ca-certificates' (c'est sous Net). Cela a fait le tour pour moi.
Je connais la liste de questions originale 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
a mis à jour le paquet openssl qui a mis à jour le fichier système ca-bundle.crt
et a résolu le problème pour moi.
La même chose peut être vraie pour d'autres distributions.
Pour cloner sur Windows tout en définissant SSL verify sur false:
git -c http.sslVerify=false clone http://example.com/e.git
Si vous voulez cloner sans borfing vos paramètres globaux.
Si vous souhaitez simplement utiliser le client Cygwin git avec github.com, il existe un moyen beaucoup plus simple sans passer par les tracas du téléchargement, de l'extraction, de la conversion ou du fractionnement des fichiers de certificat. Procédez comme suit (je suppose que Windows XP avec Cygwin et Firefox)
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 certificats de sites auxquels vous ne faites pas (nécessairement) confiance.
Si vous utilisez Mac OS X, vous pouvez installer le paquet 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 de certificats sur votre partage via:
share.install 'ca-bundle.crt'
La méthode share
n'est qu'un alias pour /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 de l'aborder sous Mac OS X. brew install curl
ne vous apportera pas grand-chose non plus car il s'agit de fût uniquement et ne sera pas lié (en cours d'exécution which curl
générera toujours /usr/bin/curl
, qui est la valeur par défaut fournie avec votre système d'exploitation). Ce message peut également avoir une certaine valeur .
Vous devrez bien sûr désactiver SSL avant d’installer homebrew
car il s’agit d’un dépôt git. Faites juste ce que dit curl quand il tombe en panne pendant 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. Assurez-vous qu'il n'y a pas d'erreurs et vous serez prêt à partir.
REMARQUE: Si vous avez recours à .curlrc
, supprimez-le de votre système dès que vous avez terminé vos tests. Ce fichier peut causer des problèmes majeurs, utilisez-le donc à des fins temporaires et avec prudence. brew doctor
vous plaindra au cas où vous oublieriez de le purger de votre système).
NOTE: 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 relatifs au binaire git basé sur la version).
Donc après avoir couru:
$ brew update
$ brew upgrade
Si vous obtenez une nouvelle version de git, relancez-le:
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
Et vous serez tous ensemble.
Enfin, si vous avez une nouvelle version de git, exécutez:
$ git config -l --system
devrait vous donner une erreur le long des lignes de
fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'
c’est votre conseil que vous devez indiquer à git où se trouve le Mozilla ca-bundle.
UPDATE:
.curlrc
peut être ou ne pas être la solution à votre problème. Dans tous les cas, installez simplement le Mozilla ca-bundle sur votre ordinateur, que vous deviez le télécharger manuellement ou non. C'est ce qui est important ici. Une fois que vous avez reçu le paquet ca, vous êtes prêt à partir. Il suffit d’exécuter la commande git config et de pointer git sur le ca-bundle.
UPDATE
J'ai récemment dû ajouter:
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
dans mon fichier de points .zshenv
puisque j'utilise zsh
. l'option git config
a fonctionné dans la plupart des cas, mais lorsque vous avez frappé github via SSL (rvm get stable
, par exemple), je rencontrais toujours des problèmes de certificat. @ Maverick l'a souligné dans son commentaire, mais juste au cas où quelqu'un le manquerait ou supposait ne pas nécessairement exporter cette variable d'environnement en plus de l'exécution de la commande git config --system....
. Merci et espérons que cela aide.
UPDATE
Il semble que le curl-ca-bundle était récemment retiré de l'homebrew . Il y a un recommandation ici .
Vous voudrez déposer des fichiers dans:
$(brew --prefix)/etc/openssl/certs
J'ai corrigé ce problème en utilisant apt-cyg (un excellent programme d'installation similaire à apt-get) pour télécharger facilement le ca -certificates (y compris Git et bien d’autres):
apt-cyg install ca-certificates
Note: apt-cyg devrait être installé en premier. Vous pouvez le faire depuis 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
Je rencontre le même problème avec Solaris Express 11. Cela m’a pris un certain 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 tout fonctionne correctement en utilisant openssl sur la ligne de commande:
openssl s_client -connect github.com:443
sur un rasbery pi j'avais
pi @ raspbmc: ~ $ clone git http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonage dans 'Dropbox-Uploader' ... erreur: problème avec le certificat SSL CA (chemin d'accès? 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é
alors id a
Sudo apt-get install ca-certificates
ensuite
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
travaillé
Si vous utilisiez un système d’exploitation basé sur Debian, vous pouvez simplement exécuter
apt-get install ca-certificates
Essayez d’utiliser un fichier .netrc, il s’authentifiera via https. Créez un appel de fichier .netrc
dans votre répertoire personnel et mettez-le dedans:
machine github.com login myusername password mypass
Voir ce post pour plus d'informations:
https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj
Avez-vous vérifié votre temps?
J'ai absolument refusé de sécuriser mes opérations git et après avoir essayé toutes les personnes mentionnées ici, je me suis rendu compte que l'une des causes possibles de l'échec des certificats est que les dates sont fausses (soit la date d'expiration du certificat, soit le horloge locale ).
Vous pouvez vérifier cela facilement en tapant date
dans un terminal. Dans mon cas (un nouveau Raspberry Pi), l'horloge locale a été réglée sur 1970. Un simple ntpdate -u 0.ubuntu.pool.ntp.org
a tout corrigé. Pour un rPi, je vous recommanderais également de placer le script suivant dans un travail journalier (par exemple, /etc/cron.daily/ntpdate
):
#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Améliorez la solution de RouMao en désactivant temporairement la vérification GIT/curl ssl dans la cmd Windows:
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.
J'ai rencontré le même problème pour configurer Git sur une plate-forme de développement collaborative 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 Page de téléchargement de curl et suivez la procédure d'installation Procédure d'installation de curl
Récupère 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 se trouve dans /etc/pki/tls/certs/ca-bundle.crt
.
Configurez git pour utiliser ce fichier de certificat en modifiant le fichier .gitconfig et en définissant le chemin sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt
Sur la machine client, vous devez obtenir le certificat et configurer le fichier .gitconfig.
J'espère que cela aidera certains d'entre vous.
J'ai tout essayé, j'ai finalement regardé dans le fichier hosts et il y avait une entrée aléatoire pour github. Supprimer l'alias a résolu le problème
% systemroot%\system32\drivers\etc\hosts
J'avais besoin de deux choses:
allez sur cygwin setup et incluez le paquet 'ca-certificates' (c'est sous Net) (comme indiqué ailleurs).
Indiquez à git où trouver les certificats installés:
GIT_SSL_CAINFO =/usr/ssl/certs/ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...
(L'option verbose n'est pas nécessaire)
Ou stocker l'option en permanence:
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git ...
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
J'avais besoin des certificats uniquement pour Cygwin et git, alors j'ai fait ce que @esquifit a posté. Cependant, je devais exécuter l'étape 5 manuellement, c_rehash n'était pas disponible sur mon système. J'ai suivi ce guide: Installation des certificats CA dans OpenSSL .
Vous pouvez essayer cette commande dans le Terminal:
git config --global http.sslVerify false