Impossible de résoudre “impossible d’obtenir un certificate d’émetteur local” en utilisant git sur Windows avec un certificate auto-signé

J’utilise git sous Windows. J’ai installé le paquet msysgit. Mon référentiel de test dispose d’un certificate auto-signé sur le serveur. Je peux accéder et utiliser le référentiel en utilisant http sans problèmes. Passer à https donne l’erreur “Problème de certificate SSL: impossible d’obtenir un certificate d’émetteur local”.

Le certificate auto-signé est installé dans les autorités de certificateion racines de confiance de ma machine Windows 7. Je peux naviguer jusqu’à l’URL du référentiel https dans Internet Explorer sans messages d’erreur.

Ce blog http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificatee-authority-to-git-exe-s-store. aspx a expliqué que curl n’utilise pas le magasin de certificates de la machine client. J’ai suivi les conseils de l’article sur le 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 certificate, comme mentionné dans le billet de blog, je reçois toujours le message “impossible d’obtenir un certificate d’émetteur local”.

J’ai vérifié que git fonctionnait toujours en clonant un repository GitHub via https.

La seule chose que je vois comme différente de l’article de blog est que mon certificate EST la racine – il n’ya pas de chaîne pour l’atteindre. Mon certificate venait à l’origine en cliquant sur le lien IIS8 IIS Manager ‘Créer un certificate auto-signé’. Peut-être que cela fait un certificate différent de ce que Curl attend.

Comment puis-je obtenir git / curl pour accepter le certificate auto-signé?

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 ouvrir à des attaques telles que des attaques de type man-in-the-middle . 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 après réception pour mettre à jour une copie de travail sur un serveur à chaque poussée. Je ai essayé de suivre les instructions dans le blog que vous avez lié. Ne fonctionnait pas pour moi aussi et le remplacement des parameters par utilisateur ne semblait pas fonctionner non plus.

J’ai fini par désactiver la vérification SSL (comme le mentionne l’article) pour Git dans son ensemble. Ce n’est pas la solution parfaite, mais cela fonctionnera jusqu’à ce que je puisse en trouver un meilleur.

J’ai édité le fichier texte de configuration Git (avec mon application neutre de fin de ligne préférée comme Notepad ++) situé à:

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

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

Cela a fait l’affaire.

REMARQUE: cette opération désactive la vérification SSL et n’est pas recommandée comme solution à long terme.

La réponse à cette question Utilisation de makecert pour le développement SSL a résolu ce problème pour moi.

Je ne sais pas pourquoi, mais le certificate créé par le simple lien «Créer un certificate auto-signé» dans le Gestionnaire des services Internet 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 en l’utilisant pour émettre un certificate d’authentification serveur pour mon serveur. Je les ai tous deux installés dans IIS.

Cela donne à ma situation la même chose que le post de blog référencé dans la question initiale. Une fois le certificate racine copié / collé dans curl-ca-bundle.crt, le combo git / curl était satisfait.

Je pense que kiddailey était assez proche, mais je ne désactiverais pas la vérification SSL mais plutôt plutôt que de fournir le certificate 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 

J’ai également fait face à ce problème. Et finalement résolu en obtenant des conseils de cette mise à jour de blog MSDN
En fait, vous devez append le certificate dans le fichier de certificates de git curl-ca-bundel.cert qui réside dans le répertoire Git \ bin.
Pas

  1. Ouvrez votre page github dans le navigateur et cliquez sur l’icône de locking dans la barre d’adresse.
  2. Dans la petite fenêtre contextuelle ouverte, accédez au lien “Afficher le certificate”, une fenêtre contextuelle s’ouvrira.
  3. Dans lequel naviguez dans l’onglet Certificats (3ème dans mon cas). Sélectionnez le nœud supérieur qui est le certificate racine. Et appuyez sur le bouton Copier le certificate en bas et enregistrez 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. Ouvrez également le fichier de certificate exporté (à l’étape 3) dans l’éditeur de texte.
  6. Copiez tout le contenu du certificate exporté à la fin de curl-ca-bundle.crt et enregistrez.

Enfin, vérifiez le statut. Veuillez noter que la sauvegarde du fichier curl-ca-bundle.crt avant édition rest sur le côté sécurisé.

J’ai juste eu le même problème mais en utilisant sourcetree sur windows Même pas pour GIT normal sur Windows aussi. En suivant les étapes suivantes, j’ai pu résoudre ce problème.

  1. Obtenir l’arborescence de certificates du serveur Cela peut être fait en utilisant chrome. Naviguez pour être l’adresse du serveur. Cliquez sur l’icône du cadenas et affichez les certificates. Exportez toute la chaîne de certificates au format PEM (base64 encoded files).
  2. Ajoutez les certificates à la chaîne de confiance de votre fichier de configuration de confiance GIT Exécutez “git config –list”. Recherchez la configuration “http.sslcainfo” qui indique l’emplacement du fichier de confiance du certificate. Copiez tous les certificates dans le fichier de la chaîne de confiance, y compris “- -BEGIN- -” et “- -END- -“.
  3. Assurez-vous d’append la chaîne de certificates entière au fichier de certificates

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

J’ai essayé d’utiliser la configuration “http.sslcapath” mais cela n’a pas fonctionné. De plus, si je n’incluais pas la chaîne entière dans le fichier de certificates, cela échouerait également. Si quelqu’un a des conseils sur ceux-ci s’il vous plaît faites le moi savoir car ce qui précède doit être répété pour une nouvelle installation.

S’il s’agit du GIT du système, vous pouvez utiliser les options de l’onglet TOOLS -> options pour utiliser le GIT du système, ce qui résout également le problème dans sourcetree.

Pour éviter de désactiver entièrement la vérification SSL ou de dupliquer / pirater le fichier de certificate CA utilisé par git, vous pouvez exporter la chaîne de certificates 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 uniquement pour l’hôte:

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

Remarque: Soumis à des attaques possibles par l’homme lors des attaques du milieu lorsque la vérification SSL est désactivée.

Dans le cas de référentiels github (ou de tout autre certificate non signé) , en choisissant ci-dessous lors de l’installation de Git-on-windows, le problème a été résolu.

entrer la description de l'image ici

J’ai déjà eu ce problème, et le résoudre en utilisant la configuration suivante.

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

Depuis git 2.3.1, vous pouvez mettre https://your.domain après http pour indiquer que le certificate suivant est uniquement pour lui.

  1. Télécharger le certificate à partir de ce lien: https://github.com/bagder/ca-bundle
  2. Ajoutez-le à C:\Program Files\Git\bin et à C:\Program Files\Git\mingw64\bin

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

Utilisez cette commande avant d’exécuter la mise à jour / installation du composeur:

 git config --global http.sslverify false