web-dev-qa-db-fra.com

Certificat SSL invalide lors du transfert sur le serveur Git

J'exécute Gitblit sur un serveur Windows et j'essaie de transférer des données vers un référentiel à partir d'un autre ordinateur du réseau. J'ai utilisé un certificat SSL (pas auto-signé, mais je pense signé par mon entreprise? Je ne sais pas trop comment ça marche, mais Chrome, IE, etc. le voient vérifié par identité).

Le serveur qui exécute Gitblit s'appelle itscm et sur le bureau du développeur, j'utilise cette URL pour transmettre des données via TortoiseGit:

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

Cependant, j'obtiens cette erreur:

fatal: impossible d'accéder ' https: // itscm: 8234/git/TestRepo.git/ ': problème de certificat SSL: certificat auto-signé dans la chaîne de certificats

Quand je vais à cette adresse en 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 constate que l'identité est vérifiée. Je ne comprends pas comment mon navigateur considère ce certificat comme valide, mais lorsque j'essaie d'y envoyer des données via Git, il échoue.

25
Justin

Git pour Windows a son propre magasin de données de confiance de certificats de confiance, qui se trouve normalement dans le fichier.

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

Désactiver la vérification des certificats (par exemple en définissant git config http.sslVerify false) n'est pas une bonne idée et peut s'avérer extrêmement dangereux (toutes les vérifications de sécurité étant désactivées et Les attaques MitM sont facilement possibles - cela dépend de l'endroit où elles sont définies et s'applique à tous les nouveaux https. les liaisons).

Pour ajouter un certificat (qu'il s'agisse d'un certificat racine auto-signé ou d'un autre certificat racine) à ce magasin de données de confiance afin de lui faire automatiquement confiance, vous devez suivre les étapes suivantes:

  1. Ouvrez l'URL du site dans Internet Explorer
  2. Cliquez sur le symbole de verrouillage dans la barre locale et choisissez "Afficher les certificats" (ou choisissez Propriétés du site et cliquez sur "Certificats")
  3. (Facultatif) Sélectionnez le certificat que vous souhaitez approuver sur la chaîne de certificats (troisième onglet) et ouvrez-le.
  4. Aller au deuxième onglet "Détails"
  5. Cliquez sur "Enregistrer dans le fichier", choisissez "X.509 codé en Base64 (.CER)" et enregistrez-le sous un nom unique (rappelez-vous ce nom; un nom sans espaces est recommandé).
  6. Maintenant vous avez plusieurs options

    1. Utilisez un magasin de certificats de confiance distinct qui ne contient que le certificat que vous venez de télécharger, en exécutant git config --global http.sslCAinfo "[yourfilename]" dans un shell cli afin d’utiliser ce certificat uniquement en tant que magasin de données de confiance.
    2. Utilisez un magasin de certificats de confiance distinct contenant votre certificat récemment téléchargé et tous les certificats du magasin de clés git, en ajoutant tout le contenu du fichier de magasin de clés système (chemin d'accès ci-dessus), puis exécutez git config --global http.sslCAinfo "[yourfilename]" dans un shell cli afin d'utiliser ce nouveau magasin de confiance.
    3. Mettez à jour le fichier de certificat système en ajoutant le contenu de votre fichier que vous venez de sauvegarder à [path-to-git-trust-store-crt-file] (par exemple, avec type [yourfilename] >> [path-to-git-trust-store-crt-file] dans un shell cli fonctionnant avec des droits d’administrateur) OR à l’aide de notepad (faites une copie du fichier ca-bundle.crt le bureau, ajoutez le contenu du fichier .crt téléchargé, puis copiez-le à nouveau). Inconvénient: les modifications pourraient être écrasées lors de la mise à jour de git

Terminé. Maintenant, ce certificat est dans le magasin de confiance de Git pour Windows.

28
MrTux

TortoiseGit n'utilise probablement pas le même fichier de clés de confiance Chrome. Je pense que Chrome utilise le magasin système, 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 aurez peut-être plus de chance. Vous pouvez aussi définir ceci globalement .

22
James Moger

Voici ce qui a fonctionné pour moi. Créez un dossier C:\GitCerts. Téléchargez ensuite le fichier Base64 .cer (suivez la réponse fournie par MrTux ) dans ce dossier C:\GitCerts.

  • À partir de la ligne de commande, exécutez la commande suivante: git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
  • Ouvrez le fichier MyCert.cer dans le Bloc-notes et laissez-le ouvert.
  • Ouvrez le fichier Git ca-bundle.crt dans un autre bloc-notes. Le mien était à l'emplacement C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt.
  • Vérifiez que le texte du certificat dans le fichier MyCert.cer se trouve bien dans le fichier ca-bundle.crt (sinon, copiez-collez tout le texte de MyCert.cer et ajoutez-le au bas du fichier ca-bundle.crt). laissez toutes les autres informations de certification ici).

----- DÉBUT DU CERTIFICAT -----

votre information de cert ici

----- CERTIFICAT FINAL -----

  • Si vous deviez modifier le fichier ca-bundle.crt, puis enregistrez-le (vous devrez peut-être l'enregistrer sur votre bureau, puis le copier et le coller de nouveau pour remplacer le fichier ca-bundle.crt).
  • Enfin, en fonction du chemin de votre fichier ca-bundle.crt, exécutez la commande suivante: git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
3
dan-iel

Pour ceux qui se trouvent dans un entreprises, qui obtiennent l'erreur de certificat auto-signée, voici une alternative.

Dans les entreprises, le même serveur git, accessible via le protocole https, généralement sera également accessible via le protocole ssh. Alors, choisissez l'option ssh de l'URL du serveur et clonez le 

git clone user@server/project.git

Bien sûr, la clé publique (id_rsa.pub) de votre dossier ~\.ssh devra être ajoutée au serveur. Ainsi, vous ne devez pas ajouter le certificat de serveur https à votre magasin de certificats Windows ou à votre porte-clés mac ( exemple ). 

0
Kiran

J'ai rencontré cette erreur en utilisant GitHub et elle est apparemment sortie de nulle part. J'avais déjà beaucoup travaillé sur GitHub auparavant.

L'antivirus Kaspersky était le coupable !!

Lorsque j'ai désactivé ma protection anti-virus (et attendu quelques minutes), j'ai été en mesure de pousser/retirer de mon dépôt Github.

Ma dernière solution consistait à localiser un certificat de Kaspersky, puis à l'ajouter au trust store Git for Windows. Cette dernière étape est déjà détaillée dans la réponse acceptée, mais pour quiconque occupant un poste similaire, j'ai pu localiser le certificat Kaspersky en allant sur:

Paramètres> Autres> Réseau> Analyse des connexions chiffrées - Paramètres avancés> Installer le certificat> Afficher le certificat> Détails> Copier dans un fichier> X.509 codé en base 64 (.cer)

J'ai trouvé une autre réponse à ce problème:

$ git config http.sslVerify false
0
Karthikeyan