web-dev-qa-db-fra.com

Le certificat SSL a été refusé lors d'une tentative d'accès à GitHub via HTTPS derrière un pare-feu

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é.

375
oharab

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

56
Peter Tillemans

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:

  1. 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.

  2. 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...
    
514
Alexey Vishentsev

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
421
Yi Zhao

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.

109
kenchilada

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 :)

41
seanp2k

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.

40
klodoma

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.

31
dirkjot

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/

16

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.

14
Wayne Walker

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.

14
FlavorScape

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)

  1. Dans Firefox, allez à 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" -> "certificat d'affichage" -> "détails" et sélectionnez 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 sur 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 la 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 certificats de sites auxquels vous ne faites pas (nécessairement) confiance.

13
esquifit

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

8
A-Dubb

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
5
sagunms

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
4
Martin Smith

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é

4
fred

Si vous utilisiez un système d’exploitation basé sur Debian, vous pouvez simplement exécuter

apt-get install ca-certificates

4
Patrick

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

3
Travis Reeder

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
3
Deiu

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.

3
Marshal

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.

2
G. Pfeiffer

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

1
GenericEventHandler

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

1
0x3bfc

J'avais besoin de deux choses:

  1. allez sur cygwin setup et incluez le paquet 'ca-certificates' (c'est sous Net) (comme indiqué ailleurs).

  2. 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 ...

0
user2896631

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
0
Naseer-shaik

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 .

0
Sonata

Vous pouvez essayer cette commande dans le Terminal:

git config --global http.sslVerify false

0
reza_khalafi