Certificat SSL invalide lors de la poussée vers le serveur Git

J'exécute Gitblit sur un serveur Windows et j'essaye de pousser des données à un dépôt à partir d'une autre machine sur le réseau. J'ai utilisé un certificat SSL (pas auto signé, mais je pense signé par mon entreprise? Pas vraiment sûr comment cela fonctionne, mais Chrome, IE,etc voir d'identité est vérifiée).

Le serveur qui exécute Gitblit est nommé itscm et sur le développeur du bureau, je suis en utilisant cette URL à envoyer des données via TortoiseGit:

git.exe push --progress  "https://itscm:8234/git/TestRepo.git" master

cependant, je comprends cela erreur:

fatale: impossible d'accéder à 'https://itscm:8234/git/TestRepo.git/': SSL problème de certificat: certificat d'auto-signature de certificat de la chaîne

quand je vais à cette adresse dans chrome, je reçois un 404 sur la page, mais je peux voir que le cadenas dans la barre D'URL est vert. Lorsque je clique sur le cadenas, je vois que l'identité est vérifiée. Je ne comprends pas comment mon navigateur voit ce certificat valide, mais lorsque je tente d'envoyer des données via Git, ça échoue.

24
demandé sur Archie 2013-10-17 00:46:34

5 réponses

Git for Windows possède son propre dépôt de certificats de confiance qui est normalement situé dans le fichier

  • Git pour Windows <=1.9: [Git installdir]\bin\curl-ca-bundle.crt (e.g.,C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt; configuré par la touche http.sslCAinfo[Git installdir]\etc\gitconfig).
  • Git pour Windows >= 2.0: [Git installdir]\mingwXX\ssl\certs\ca-bundle.crtXX représente 32 ou 64 (e.g.,C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt; configuré par la touche http.sslCAinfoC:\ProgramData\Git\config).

désactiver la vérification des certificats (par exemple, en définissant git config http.sslVerify false) n'est pas un bonne idée et pourrait être extrêmement dangereux (comme tous les contrôles de sécurité sont désactivés et les attaques de type MitM sont facilement possibles-selon l'endroit où cela est défini, cela s'applique à toutes les nouvelles connexions https).

pour ajouter un certificat (peut-elle être une auto-signé de l'un ou l'autre de certificat racine) à ce magasin de confiance pour confiance automatiquement, vous devez effectuer les étapes suivantes:

  1. ouvrir L'URL du site sur Internet Explorer
  2. cliquez sur le symbole de verrouillage dans la barre locale et choisissez "Afficher les certificats" (ou choisissez les propriétés du site et cliquez sur "Certificats")
  3. (optionnel) sélectionnez le certificat auquel vous voulez faire confiance sur la chaîne de certificats (troisième onglet) et ouvrez-le
  4. allez au deuxième onglet "Détails"
  5. cliquez sur" Save to file", choisissez " Base64-encoded X. 509 (.CER) " et le sauvegarder avec un nom unique (se souvenir de ce nom; un nom sans espaces est recommandé.)
  6. Maintenant vous avez plusieurs options

    1. utilisez une boutique de confiance de certificats séparée qui ne contient que votre cert téléchargé, en exécutant git config --global http.sslCAinfo "[yourfilename]" dans un shell cli afin de n'utiliser ce certificat qu'en tant que dépôt en fiducie.
    2. utilisez un magasin de confiance de certificat séparé qui contient votre cert juste téléchargé et tous les certificats de la boutique de confiance de git, en ajoutant tout le contenu du fichier de la boutique de confiance de système (chemin voir ci-dessus), puis d'exécuter git config --global http.sslCAinfo "[yourfilename]" dans un shell cli afin d'utiliser ce nouveau magasin de fiducie.
    3. mettez à jour le fichier de certificats système, en ajoutant le contenu de votre fichier sauvegardé à [path-to-git-trust-store-crt-file] (par exemple type [yourfilename] >> [path-to-git-trust-store-crt-file] dans un interpréteur de commandes cli fonctionnant avec des droits administratifs) ou en utilisant le bloc-notes (faire une copie du paquet ca.crt file on desktop, ajouter le contenu du downlaoded .crt fichier et copiez-le à l'arrière). Désavantage: les modifications peuvent être écrasées sur git mise à jour

fait. Maintenant, ce certificat dans le magasin de confiance de Git pour Windows.

27
répondu MrTux 2016-04-08 08:47:21

TortoiseGit n'utilise probablement pas le même Trustststore Chrome. Je pense que Chrome utilise le système de stockage, Firefox utilise le sien. Je n'ai aucune idée de ce que TortoiseGit utilise.

Sur le client, si vous définissez git config http.sslVerify false vous pouvez avoir plus de chance. Vous pouvez aussi définissez ceci globalement.

21
répondu James Moger 2013-10-16 21:28:12

Voici ce qui a fonctionné pour moi. Créer un dossier C:\GitCerts. Alors téléchargez le Base64 .cer fichier (suivre la réponse fournie par MrTux) à ceci C:\GitCerts dossier.

  • depuis la ligne de commande, lancez la commande suivante:git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
  • Ouvrir MyCert.cer le fichier dans le bloc-notes et de la laisser ouverte
  • Ouvrir le Git ca-bundle.crt fichier dans un autre bloc-notes. La mienne était à l'emplacement C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt.
  • Vérifier le cert texte dans le MyCert.cer le fichier est dans ca-bundle.crt fichier (il doit l'être), si pas de simplement copier et coller tout le texte à partir de MyCert.ajouter le tout au bas du paquet de ca.crt fichier (assurez-vous de laisser toutes les autres informations cert là-dedans).

-----CERTIFICAT DE DÉBUT - - - - -

votre cert info ici

-----END CERTIFICATE - - - - -

  • si vous avez dû modifier le paquet ca.crt fichier puis enregistrer (vous pouvez l'enregistrer sur votre Bureau et de le copier et de le coller de retour pour écraser le ca-bundle.crt fichier)
  • enfin, basé sur le chemin de votre ca-bundle.crt le fichier, exécutez la commande suivante: git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
3
répondu dan-iel 2017-05-23 12:18:24

Pour les entreprises, qui obtient le certificat auto-signé erreur-ci-dessous est une alternative.

Dans les entreprises, le même serveur git, qui est accessible via le protocole https, sera également accessible via le protocole ssh. alors choisissez l'option ssh de l'url du serveur et clonez le dépôt comme

git clone user@server/project.git

bien sûr, la clé publique( id_rsa.pub ) de votre ~\.ssh dossier à ajouter à serveur. De cette façon, vous n'avez pas à ajouter le certificat de serveur https à votre magasin de certificats windows ou votre porte-clés mac ( exemple).

0
répondu Kiran 2014-12-27 12:11:14

j'ai fait l'expérience de cette erreur en utilisant GitHub et elle semble être venue de nulle part. J'avais fait beaucoup de travail sur GitHub avant.

L'antivirus Kaspersky était le coupable!!

lorsque j'ai désactivé ma protection anti-virus (et attendu quelques minutes), j'ai pu pousser / tirer de ma GitHub repo.

ma solution finale a été de localiser un certificat de Kaspersky puis de l'ajouter au Git for Windows trust store. Cette dernière étape est déjà détaillée dans réponse acceptée, mais pour quelqu'un d'autre dans une position similaire j'ai été en mesure de localiser le certificat Kaspersky en allant à:

paramètres > supplémentaires > réseau > connexions cryptées balayage-Paramètres avancés > installer le certificat > afficher le certificat > Détails > Copier dans le fichier > Base-64 encoded X. 509 (.cer)

0
répondu The Gilbert Arenas Dagger 2018-09-29 19:30:00