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




github remove tag (23)

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 de https://[email protected]/username/ExcelANT.git un mot de passe, mais ne fait rien après l'avoir entré. https://username:<password>github.com/username/ExcelANT.git et cloner le https://username:<password>github.com/username/ExcelANT.git vide à partir de rien, 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:
error: 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

Activer 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 l'autorité 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 # 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 l'autorité 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 # 0
erreur: problème de certificat SSL, vérifiez que le certificat d'autorité de certification est OK. Détails:
error: 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. Cependant, 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é.


J'ai eu le même problème. L'importation de certificat ou la commande pour annuler la vérification SSL ne fonctionnait pas. Il s’avère être un mot de passe expiré pour le proxy réseau. Il y avait une entrée de configuration de proxy. dans le fichier .gitconfig présent dans mon profil utilisateur Windows. Je viens de supprimer toute l'entrée et ça a recommencé à fonctionner.


J'avais besoin de deux choses:

  1. allez dans la configuration de cygwin 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 ...


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.


Notez que pour que cela fonctionne (installation de RVM sur CentOS 5.6), j’ai dû exécuter:

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


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 de certification (y compris Git et bien d'autres):

apt-cyg install ca-certificates

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

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.


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 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 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 la bash.

C'est tout.

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.


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


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 formula installe le paquet de cert sur votre part via:

share.install 'ca-bundle.crt'

La méthode share est simplement un alias de /usr/local/share , et 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. L' brew install curl ne vous apportera pas grand-chose non plus, car il s'agit uniquement d'un fût et ne sera pas liée (lancer which curl /usr/bin/curl , qui est la valeur par défaut fournie avec votre système d’exploitation). Cet article peut aussi avoir une certaine valeur .

Bien sûr, vous devrez 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 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 utilisez le .curlrc , supprimez-le de votre système dès que vous avez terminé les tests. Ce fichier peut causer des problèmes majeurs, utilisez-le donc à des fins temporaires et avec prudence. brew doctor se 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 en fonction de 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.

METTRE À JOUR:

.curlrc peut ou peut ne pas être la solution à votre problème. Dans tous les cas, installez simplement le Mozilla ca-bundle sur votre ordinateur, que vous ayez à 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.

METTRE À JOUR

J'ai récemment dû ajouter:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt vers mon fichier point .zshenv puisque j'utilise zsh . L'option git config fonctionné dans la plupart des cas, mais lorsque rvm get stable 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.

METTRE À JOUR

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

Vous voudrez déposer des fichiers dans:

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


Une solution très simple: remplacez 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.


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 modifier vos paramètres globaux.


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 à ~/.ssh/config cette astuce peut être utilisée pour des 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

[email protected]:~$ 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.
[email protected]:~$

(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 lire plus dans ce blog


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: Installer le paquet 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 .

    cacert.pem 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 a des conséquences sur la sécurité. Sans vérification de l'authenticité des connexions SSL / HTTPS, un attaquant malveillant peut emprunter l'identité d'un point de terminaison approuvé (tel que GitHub ou un autre hôte Git distant) et vous serez vulnérable aux attaques de type Man-in-the-Middle . Assurez-vous de bien comprendre les problèmes de sécurité et votre modèle de menace avant de les utiliser comme solution.

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

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 utiliser ceci 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, 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.


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 erronées (la date d'expiration du certificat ou l'horloge locale ).

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

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

Pour ceux qui utilisent Msys / MinGW GIT, ajoutez ceci

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 

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

  1. Accès au trousseau ouvert
  2. Certificats de recherche pour "DigiCert"
  3. Menu Afficher> Afficher les certificats expirés

J'ai trouvé deux certificats dénommés "Autorité de certification DigiCert High Assurance EV", l'un expirant le 20 novembre et l'autre expirant 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.


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

puis

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

travaillé


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

ssh -T [email protected]

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

[email protected]:MyGithubUsername/MyRepoName.git

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



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 de certificats CA dans le framework OpenSSL .


Sur CentOS 5.x, une simple yum update openssl 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.





ssl-certificate