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.
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 touchehttp.sslCAinfo
[Git installdir]\etc\gitconfig
). - Git pour Windows >= 2.0:
[Git installdir]\mingwXX\ssl\certs\ca-bundle.crt
oùXX
représente32
ou64
(e.g.,C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
; configuré par la touchehttp.sslCAinfo
C:\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:
- ouvrir L'URL du site sur Internet Explorer
- 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")
- (optionnel) sélectionnez le certificat auquel vous voulez faire confiance sur la chaîne de certificats (troisième onglet) et ouvrez-le
- allez au deuxième onglet "Détails"
- 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é.)
Maintenant vous avez plusieurs options
- 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. - 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. - mettez à jour le fichier de certificats système, en ajoutant le contenu de votre fichier sauvegardé à
[path-to-git-trust-store-crt-file]
(par exempletype [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
- utilisez une boutique de confiance de certificats séparée qui ne contient que votre cert téléchargé, en exécutant
fait. Maintenant, ce certificat dans le magasin de confiance de Git pour Windows.
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.
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'emplacementC:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
. - Vérifier le cert texte dans le
MyCert.cer
le fichier est dansca-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"
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).
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)