Impossible de résoudre "impossible d'obtenir un certificat d'émetteur local" en utilisant git sur Windows avec un certificat auto-signé

j'utilise git sur Windows. J'ai installé le paquet msysgit. Mon référentiel de test a un certificat auto-signé sur le serveur. Je peux accéder et utiliser le dépôt en utilisant http sans problème. Le déplacement de https donne l'erreur "Certificat SSL problème: impossible d'obtenir locales certificat de l'émetteur".

j'ai le certificat auto signé installé dans les autorités de Certification racine de confiance de ma machine Windows 7 - client. Je peux naviguer vers le dépôt https url dans Internet Explorer et pas de messages d'erreur.

ce blog http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exe-s-store.aspx a expliqué que curl n'utilise pas le magasin de certificats de la machine client. J'ai suivi les conseils du blogue pour créer une copie privée de curl-ca-bundle.crt et configurer git pour l'utiliser. Je suis sûr que git utilise ma copie. Si je renomme la copie; git se plaint le dossier a disparu.

j'ai collé dans mon certificat, comme mentionné dans le billet de blog, je reçois toujours le message"Impossible d'obtenir un certificat émetteur local".

j'ai vérifié que git fonctionnait toujours en clonant un dépôt Github via https.

la seule chose que je vois qui est différent de l'article de blog est que mon certificat est la racine - il n'y a pas de chaîne pour l'atteindre. À l'origine, mon certificat provenait d'un clic sur le Gestionnaire IIS8 IIS le lien "Créer un Certificat Auto-Signé'. Peut-être que cela rend un certificat différent en quelque sorte à ce que curl attend.

Comment faire pour que git / curl accepte le certificat auto-signé?

178
demandé sur RichardHowells 2014-05-27 13:15:12

11 réponses

ouvrez Git Bash et lancez la commande si vous voulez désactiver complètement la vérification SSL.

git config --global http.sslVerify false

Note: Cette solution peut vous ouvrir à des attaques comme les attaques de l'homme-dans-le-milieu . C'est pourquoi relancer la vérification dès que possible:

git config --global http.sslVerify true
162
répondu Samir 2018-03-06 09:32:11

j'ai eu ce problème aussi. Dans mon cas, j'essayais d'obtenir un crochet Git post-receive pour mettre à jour une copie de travail sur un serveur à chaque pression. J'ai essayé de suivre les instructions dans le blog que vous avez consulté. Cela n'a pas fonctionné pour moi aussi bien et le fait d'annuler les réglages par utilisateur n'a pas semblé fonctionner non plus.

ce que j'ai fini par avoir à faire était de désactiver la vérification SSL (comme le mentionne l'article) pour Git dans son ensemble. Pas la solution parfaite, mais ça marchera jusqu'à ce que je pouvez trouver un meilleur.

j'ai édité le fichier texte de la configuration Git (avec mon appli neutre de fin de ligne préférée comme Notepad++) situé à:

C:\Program fichiers (x86)\Git\etc\gitconfig

dans le bloc [http], j'ai ajouté une option pour désactiver sslVerify. Il ressemblait à ceci quand j'ai été fait:

[http]
    sslVerify = false
    sslCAinfo = /bin/curl-ca-bundle.crt

ça a fait l'affaire.

NOTE: cette option empêche la vérification SSL et n'est pas recommandée comme solution à long terme.

88
répondu kiddailey 2016-04-25 16:51:49

kiddailey était, je pense, assez proche, mais je ne demande pas de désactiver la vérification ssl mais plutôt plutôt juste de fournir le certificat local:

dans le fichier de configuration Git

[http]
    sslCAinfo = /bin/curl-ca-bundle.crt

ou via la ligne de commande:

git config --global http.sslCAinfo /bin/curl-ca-bundle.crt
39
répondu Oliver 2015-04-22 00:39:30

la réponse à cette question en utilisant makecert pour le développement SSL a fixé ceci pour moi.

Je ne sais pas pourquoi, mais le certificat créé par le simple lien 'Create Self Signed Certificate' dans IIS Manager ne fait pas l'affaire. J'ai suivi l'approche dans la question liée de la création et de l'installation d'une racine CA auto-signée, puis j'ai utilisé cela pour émettre un certificat D'authentification de serveur pour mon serveur. J'ai installé les deux dans IIS.

Qui obtient ma situation, le même que le blog référencé dans la question d'origine. Une fois que le certificat de racine a été copié/collé dans curl-ca-bundle.crt git/curl combo étaient satisfaits.

39
répondu RichardHowells 2017-05-23 11:33:26

j'ai fait face à cette question aussi. Et finalement obtenu résolu en obtenant des conseils de ce blog MSDN Update

" en fait, vous devez ajouter le certificat dans le fichier de certificats de git curl-ca-bundel.cert qui réside dans le répertoire Git\bin.

Étapes

  1. ouvrez votre page github dans le navigateur, et cliquez sur l'icône de verrouillage dans la barre d'adresse.
  2. dans le petit popup ouvert, naviguez vers le lien 'view certificate', il ouvrira une fenêtre popup.
  3. dans lequel naviguez vers l'onglet Certificats (3e dans mon cas). Sélectionnez le nœud supérieur qui est le certificat racine. Appuyez sur le bouton Copier le certificat en bas et sauvegardez le fichier.
  4. dans l'Explorateur de fichiers, naviguez dans le répertoire Git\bin et ouvrez curl-ca-bundle.crt dans l'éditeur de texte.
  5. Ouvrir le certificat exporté fichier (étape 3) dans l'éditeur de texte.
  6. copier tout le contenu du certificat exporté à la fin de curl-ca-bundle.crt, et de les enregistrer.

Enfin vérifier l'état. s'il vous Plaît noter que la sauvegarde curl-ca-bundle.crt file avant d'éditer pour rester du côté sûr.

33
répondu Nadeem Jamali 2015-06-23 18:09:52

je viens d'avoir le même problème mais en utilisant sourcetree sur windows mêmes étapes pour GIT normal sur Windows aussi bien. En suivant les étapes suivantes, j'ai pu résoudre ce problème.

  1. obtenir l'arborescence des certificats du serveur Cela peut être fait en utilisant chrome. Accédez à l'adresse du serveur. Cliquez sur l'icône du cadenas et visualisez les certificats. Exportez toute la chaîne de certificats au format Base64 encoded files (PEM).
  2. ajouter les certificats la chaîne de confiance de votre fichier de configuration git trust Lancez "git config --list". trouver le "http".sslcainfo " configuration indique l'emplacement du fichier de confiance du certificat. Copiez tous les certificats dans le fichier de la chaîne de fiducie, y compris le "- -BEGIN- -" et le "- -END- -".
  3. assurez-vous d'ajouter toute la chaîne de certificats au fichier de certificats

cela devrait résoudre votre problème avec les certificats auto-signés et en utilisant GIT.

j'ai essayé d'utiliser le http.la configuration de sslcapath" mais cela n'a pas fonctionné. De plus, si je n'incluais pas toute la chaîne dans le fichier de certificats, cela échouerait également. Si quelqu'un a des pointeurs sur ceux-ci s'il vous plaît me faire savoir que le ci-dessus doit être répété pour une nouvelle installation.

si c'est le git système, alors vous pouvez utiliser les options dans Outils - > options GIt onglet à utiliser le système GIT et cela résout le problème en sourcetree.

16
répondu JamesD 2016-11-28 17:19:59

pour éviter de désactiver entièrement la vérification ssl ou de dupliquer / pirater le fichier de certificats CA empaqueté utilisé par git, vous pouvez exporter la chaîne de certificats de l'hôte dans un fichier , et faire en sorte que git l'utilise:

git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer

Si cela ne fonctionne pas, vous pouvez désactiver la vérification ssl seulement pour l'hôte:

git config --global http.https://the.host.com/.sslVerify false

Note: soumis à des attaques possibles de l'homme au milieu lorsque la vérification ssl est éteindre.

15
répondu zionyx 2017-05-16 10:12:08

dans le cas de GitHub Repositories (ou tout autre certificat non signé par l'utilisateur) , En choisissant ci-dessous lors de l'installation de Git-on-windows, a résolu le problème.

enter image description here

4
répondu Jawad Al Shaikh 2017-08-15 15:01:28

j'ai déjà eu ce problème, et je le résous en utilisant la configuration suivante.

[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate

depuis git 2.3.1, vous pouvez mettre https://your.domain après http pour indiquer que le certificat suivant est seulement pour lui.

3
répondu Ben P.P. Tung 2017-11-09 07:50:38
  1. télécharger le certificat à partir de ce lien: https://github.com/bagder/ca-bundle
  2. ajouter à C:\Program Files\Git\bin et C:\Program Files\Git\mingw64\bin

alors essayez quelque chose comme: git clone https://github.com/heroku/node-js-getting-started.git

1
répondu Alex 2017-05-06 15:44:56

utilisez cette commande avant d'exécuter composer update / install:

git config --global http.sslverify false
-5
répondu Prashant Paliwal 2017-03-23 10:13:37