web-dev-qa-db-fra.com

Visual Studio 2017 Enterprise + TFS 2018 + Git Clone = Impossible d'obtenir le certificat d'émetteur local

Je suis nouveau pour interagir avec Git et j'essaie de le combiner avec l'infrastructure TFS, mais je rencontre des problèmes d'authentification SSL. Pas de Github, pas de VSTS. TFS est local, donc une installation locale.

Partie serveur:

J'ai installé TFS 2018 sur Windows Server 2016 et créé un certificat auto-signé d'entreprise et lier le service Web TFS (gestionnaire IIS) sur ce certificat.

TFS est configuré pour s'exécuter uniquement via HTTPS. HTTP est redirigé vers HTTPS. J'ai configuré un nouveau projet avec Git comme système de version.

Partie client:

J'ai deux types de clients Windows. Mise à jour anniversaire de Windows 7 SP1 et 10, les deux avec Visual Studio 2017 Enterprise.

J'ai installé le certificat (en tant qu'autorités de certification racines de confiance) et en me connectant via un navigateur, je n'ai absolument aucune information sur le projet. Aucun navigateur ne déclenche d'alertes concernant l'authenticité du certificat. Ensuite, j'ai installé Git-2.15.1.2-64-bit.exe, en utilisant la bibliothèque Windows Secure Channel.

J'ai suivi cette guide pour configurer les clients Git, car je recevais une erreur fatale de titre. Donc, fondamentalement, j'ai extrait le contenu du fichier auto-signé et ajouté au fichier ca-bundle.crt. Tous:

  • C:/Program Files/Git/mingw64/ssl/certs /
  • C:\users\myname (créé en tant que global comme le dit le guide)
  • C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\ssl\certs (créé par l'installation de Visual Studio 2017)

Lorsque j'utilise la commande "git config --list --show-Origin" de Powershell, je vois dans la liste: file: "C:\Program Files\Git\mingw64/etc/gifconfig" http.sslcainfo = C:/Program Files/Fichier Git/mingw64/ssl/certs/ca-bundle.crt: "C: /users/myname/.gifconfig" http.sslcainfo = C: /users/myname/ca-bundle.crt

Si j'essaie de cloner le référentiel à partir du panneau VS2017 Team Explorer, il ne cesse de dire: " Git a échoué avec une erreur fatale. Fatal: impossible d'accéder à ' https: //tfs.blahblah/ ': Problème de certificat SSL: impossible d'obtenir le certificat d'émetteur local "

Mais lorsque j'utilise Git GUI, il répond avec une erreur différente: fatal: impossible de trouver la référence distante HEAD Pour autant que je sache, cela semble raisonnable car il n'y a pas de commit attaché.

Mais je ne peux rien engager si je ne peux pas "jumeler" avec Visual Studio 2017.

J'ai lu plusieurs liens, mais je n'ai pas pu le faire. Donc, avant de le marquer comme dupliqué, je vous demande de bien vouloir prêter attention à mes exigences système/environnement spécifiques.

Remarque: et s'il vous plaît, ne me suggérez pas de désactiver SSL car, comme nous l'avons déjà dit, n'est PAS une solution dans environnements d'entreprise/entreprise

11
DioBrando

Dans Git Settings, Global Settings dans Team Explorer, il y a une option pour choisir entre OpenSSL et Secure Channel.

À partir de Visual Studio 2017 (version 15.7 preview 3), l'utilisation de SChannel dans les paramètres Git Global a résolu mon problème.

12
Anoj

Après deux jours avec le support de l'administrateur système, j'ai trouvé la solution. Je le poste ici au cas où cela pourrait aider quelqu'un d'autre. Visual Studio 2017 ne semble pas accepter un certificat auto-signé, car les états d'erreur ("émetteur local bla bla"). Il doit s'agir d'une autorité de certification locale pour l'approuver. Les étapes étaient les suivantes:

Serveur:

  1. Installer la société/l'autorité de certification de confiance sur la machine TFS en tant que racine de l'autorité de confiance
  2. Préparer le certificat pour TFS et le faire dériver de la société/CA de confiance.
  3. Installez-le en tant que racine de l'autorité de confiance sur la machine TFS
  4. Configurez la liaison TFS-IIS afin de rendre le certificat TFS obligatoire pour les connexions HTTPS

Client:

  1. Installer le certificat CA en tant que racine de l'autorité de confiance sur la machine cliente (essayé avec Windows 7 et 10)
  2. Installez le certificat TFS en tant que racine Trusted Authority sur la machine cliente (vous devriez voir le verrou dans le navigateur et la connexion via ce dernier doit être reconnue comme sécurisée)
  3. Installez le client Git (j'ai Git-2.15.1.2-64-bit).
  4. Exécutez un shell (cmd, Powershell, Git-bash comme vous préférez) et numérisez cette commande: git config --global http.sslCAInfo C: /Users//ca-bundle.crt (car Git et Visual Studio ont plusieurs dossiers où ils stocker les certificats, vous créez essentiellement un chemin global pour les deux)
  5. Vous devriez maintenant pouvoir voir un nouveau fichier .gitconfig avec ce contenu: [http] sslCAInfo = C: /Users//ca-bundle.crt
  6. si vous chiffre la commande "git config --list --show-Origin" vous devriez voir le nouveau chemin/config ajouté
  7. Copiez ca-bundle.crt depuis le chemin C:\Program Files\Git\mingw64\ssl\certs vers C:/Users // chemin
  8. Exportez le certificat CA en Base 64 X.509 (.CER) jusqu'à votre chemin (vous pouvez afficher les certificats depuis IE Options Internet/Contenu/Certificats).
  9. Ouvrez-le avec un éditeur comme Notepad ++ ou quel que soit le certificat CA que vous venez d'exporter. Le contenu doit être: -----BEGIN CERTIFICATE-----publickey-----END CERTIFICATE-----
  10. Copiez ce contenu
  11. Ouvrez le C: /Users//ca-bundle.crt et collez en ajoutant ce contenu
  12. Exportez le certificat TFS en Base 64 X.509 (.CER) jusqu'à votre chemin.
  13. Ouvrez-le avec l'éditeur que vous préférez et copiez le contenu
  14. Ouvrez le C: /Users//ca-bundle.crt et collez en ajoutant ce contenu
  15. Sauvegardez le fichier

Vous devriez maintenant pouvoir cloner le référentiel.

Donc, fondamentalement, le point est que le certificat doit avoir toute l'autorité de la chaîne et il doit y en avoir un.

13
DioBrando

Vous pouvez effectuer une solution rapide en:

git config --global http.sslVerify false

Réf: https://confluence.atlassian.com/bitbucketserverkb/ssl-certificate-problem-unable-to-get-local-issuer-certificate-816521128.html

3
user9371102