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.
Git pour Windows a son propre magasin de données de confiance de certificats de confiance, qui se trouve normalement dans le fichier.
[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 installdir]\mingwXX\ssl\certs\ca-bundle.crt
où XX
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:
Maintenant vous avez plusieurs options
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.git config --global http.sslCAinfo "[yourfilename]"
dans un shell cli afin d'utiliser ce nouveau magasin de confiance.[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 gitTerminé. Maintenant, ce certificat est dans le magasin de confiance de Git pour Windows.
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 .
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
.
git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
MyCert.cer
dans le Bloc-notes et laissez-le ouvert.ca-bundle.crt
dans un autre bloc-notes. Le mien était à l'emplacement C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
.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 -----
ca-bundle.crt
).ca-bundle.crt
, exécutez la commande suivante: git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
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 ).
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