J'utilise git sous Windows. J'ai installé le paquet msysgit. Mon référentiel de test possède un certificat auto-signé sur le serveur. Je peux accéder et utiliser le référentiel en utilisant http sans problèmes. Le passage à https génère l’erreur "Problème de certificat SSL: impossible d’obtenir un certificat d’émetteur local".
Le certificat auto-signé est installé dans les autorités de certification racines de confiance de mon ordinateur client Windows 7. Je peux accéder à l'URL du référentiel https dans Internet Explorer sans message 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 cliente. J'ai suivi les conseils de l'article de blog 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 que le fichier est manquant.
J'ai collé dans mon certificat, comme indiqué dans l'article du blog, le message "Impossible d'obtenir un certificat d'émetteur local".
J'ai vérifié que git fonctionnait toujours en clonant un référentiel GitHub via https.
La seule chose que je vois qui soit différente de l'article de blog, c'est que mon certificat IS est la racine - il n'y a pas de chaîne pour l'atteindre. Mon certificat provenait à l'origine du lien IIS8 IIS Manager nommé 'Créer un certificat auto-signé'. Peut-être cela rend-il un certificat différent de ce que Curl attend.
Comment puis-je obtenir que git/curl accepte le certificat auto-signé?
La réponse à cette question tilisation de makecert for Development SSL a résolu ce problème pour moi.
Je ne sais pas pourquoi, mais le certificat créé par le simple lien "Créer un certificat auto-signé" dans IIS Manager ne fait pas l'affaire. J'ai suivi l'approche suivie dans la question connexe de la création et de l'installation d'une racine CA auto-signée; puis l’utiliser pour émettre un certificat d’authentification de serveur pour mon serveur. J'ai installé les deux dans IIS.
Cela donne à ma situation la même chose que le billet de blog mentionné dans la question initiale. Une fois le certificat racine copié/collé dans curl-ca-bundle.crt, le combo git/curl était satisfait.
Ouvrez Git Bash et exécutez la commande si vous souhaitez désactiver complètement la vérification SSL.
git config --global http.sslVerify false
Remarque: cette solution peut vous exposer à des attaques similaires à celles de l'homme du milie. Par conséquent, réactivez la vérification dès que possible:
git config --global http.sslVerify true
J'ai eu ce problème aussi. Dans mon cas, j’essayais d’obtenir un hook Git post-réception pour mettre à jour une copie de travail sur un serveur à chaque Push. J'ai essayé de suivre les instructions du blog auquel vous avez accédé. Cela n'a pas fonctionné pour moi non plus, et le fait de modifier les paramètres utilisateur par utilisateur n'a pas semblé fonctionner non plus.
Ce que j’ai finalement dû faire est de désactiver la vérification SSL (comme le mentionne l’article) pour Git dans son ensemble. Ce n'est pas la solution parfaite, mais ça va marcher jusqu'à ce que je puisse en trouver une meilleure.
J'ai édité le fichier texte de configuration Git (avec mon application neutre de fin de ligne préférée telle que Notepad ++) situé à l'adresse:
C:\Program Files (x86)\Git\etc\gitconfig
Dans le bloc [http], j'ai ajouté une option pour désactiver sslVerify. Cela ressemblait à ça quand j'ai eu fini:
[http]
sslVerify = false
sslCAinfo = /bin/curl-ca-bundle.crt
Cela a fait le tour.
NOTE: Ceci désactive la vérification SSL et n'est pas recommandé comme solution à long terme.
kiddailey Je pense que c'était assez proche, cependant je ne voudrais pas désactiver la vérification SSL mais plutôt simplement 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
Le problème est que git utilise par défaut le backend crypté "Linux".
Depuis Git pour Windows 2.14, vous pouvez maintenant configurer Git pour qu'il utilise SChannel, la couche réseau intégrée de Windows, en tant que back-end crypté. Cela signifie que vous utiliserez le mécanisme de stockage du certificat Windows et que vous n'avez pas besoin de configurer explicitement le mécanisme de stockage de l'autorité de certification curl: https://msdn.Microsoft.com/en-us/library/windows/desktop/ aa380123 (v = vs.85) .aspx
Il suffit d'exécuter:
git config --global http.sslbackend schannel
Cela devrait aider.
Schannel est à présent le paramétrage standard lors de l’installation de git pour Windows, il est également recommandé de ne pas extraire les dépôts par SSH si possible, car https est plus facile à configurer et moins bloqué par un pare-feu, moins de risques de défaillance.
J'ai aussi fait face à ce problème. Et finalement résolu en obtenant des conseils de ce blog MSDN .
Mettre à jour
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
Enfin, vérifiez le statut. Veuillez noter que le fichier de sauvegarde curl-ca-bundle.crt avant édition est conservé pour être sûr.
Pour éviter de désactiver entièrement la vérification ssl ou de dupliquer/pirater le fichier de certificat de l'autorité de certification fourni par git, vous pouvez exporter la chaîne de certificats de l'hôte dans un fichier, et obliger git à l'utiliser:
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 niquement pour l'hôte:
git config --global http.https://the.Host.com/.sslVerify false
Remarque: Soumis à d'éventuelles attaques de l'homme du milieu lorsque la vérification de SSL est désactivée.
Je viens d'avoir le même problème, mais en utilisant Sourcetree sur Windows, les mêmes étapes pour GIT normal sur Windows. En suivant les étapes suivantes, j'ai pu résoudre ce problème.
Cela devrait résoudre votre problème avec les certificats auto-signés et l’utilisation de GIT.
J'ai essayé d'utiliser la configuration "http.sslcapath" mais cela n'a pas fonctionné. De plus, si je n'incluais pas la totalité de la chaîne dans le fichier de certificats, cela échouerait également. Si quelqu'un a des indicateurs sur ceux-ci, faites-le moi savoir, car ce qui précède doit être répété pour une nouvelle installation.
S'il s'agit du système GIT, vous pouvez utiliser les options de TOOLS -> options Gt pour utiliser le système GIT, ce qui résout également le problème dans l'arbre source.
J'ai eu ce problème avant, et le résoudre en utilisant la config 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 ne l’applique que.
C:\Program Files\Git\bin
et C:\Program Files\Git\mingw64\bin
Puis essayez quelque chose comme: git clone https://github.com/heroku/node-js-getting-started.git
Une chose qui m'a dérangé était le format du chemin (sur mon PC Windows). J'avais à l'origine ceci:
git config --global http.sslCAInfo C:\certs\cacert.pem
Mais cela a échoué avec l'erreur "impossible d'obtenir le certificat de l'émetteur local".
Ce qui a finalement fonctionné a été ceci:
git config --global http.sslCAInfo "C:\\certs\\cacert.pem"