56 votes

Git - La fonction de révocation n'a pas pu vérifier la révocation du certificat.

J'essaie de cloner à partir de Github en utilisant à la fois Github Desktop et le shell git mais je continue à obtenir cette erreur :

Cloning into 'C:\Users\John Doe\workspace\MyProject'...
fatal: unable to access 'https://github.com/JohnDoe/MyProject.git/': 
schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - 
The revocation function was unable to check revocation for the certificate.

Même problème lors de la récupération d'un référentiel existant.

J'ai déjà essayé de télécharger les clés SSH trouvées dans ~/.ssh/github-ssh.pub aux paramètres de Github mais cela n'aide en rien.

EDIT : Je viens de vérifier, cela se produit même si j'essaie de cloner un référentiel inexistant.

59voto

Clockwork-Muse Points 6806

Cette erreur est également fréquente lorsque vous vous trouvez sur un réseau d'entreprise qui effectue un MITM sur tout le trafic, puis bloque la vérification de la révocation. Bien que, de toute évidence, la situation idéale soit de ne pas bloquer les vérifications (ou au moins, d'utiliser une liste blanche d'url), il peut être nécessaire de contourner ce problème.

Une option est, comme dans la première partie de la réponse de Mike, en utilisant les liaisons OpenSSL à la place . Bien que cette méthode fonctionne, elle nécessite une maintenance manuelle des listes de certificats, ce qui peut ne pas être pratique dans des situations extrêmes (par exemple, de nouveaux certificats racine émis chaque jour, bien que cela soit peu probable).

L'autre option, qui s'apparente à la deuxième partie de la réponse de Mike, consiste à désactiver la vérification de la révocation.
Les versions récentes, 2.19 et supérieures, de git-for-Windows fournissent une http.schannelCheckRevoke réglage :

Utilisé pour renforcer ou désactiver les contrôles de révocation de certificat dans cURL lorsque http.sslBackend est défini sur "schannel". La valeur par défaut est true si non activé. Il n'est nécessaire de le désactiver que si Git fait constamment des erreurs et que le message concerne la vérification de l'état de révocation d'un certificat. certificat. Cette option est ignorée si cURL ne dispose pas du support pour pour définir l'option SSL pertinente au moment de l'exécution.

... donc vous pouvez simplement désactiver la vérification de la révocation en premier lieu :
git config --global http.schannelCheckRevoke false

Notez que, contrairement à la désactivation complète de SSL, ceci n'est pas intrinsèquement moins sûr que d'utiliser la réponse de Mike pour des dépôts spécifiques : si vous capturez et configurez une liste de révocation vide (le cas habituel), vous avez effectivement désactivé la vérification de la révocation. La désactivation de la vérification de la révocation ne devient un risque qu'en cas de compromission de la clé privée. (à un moment donné de la chaîne), ce qui est rare et difficile.

Notez également que dans un cadre MITM d'entreprise, la vérification de la révocation est effectuée pour vous : aucun proxy digne de ce nom n'émettrait un certificat pour un certificat invalide ou (connu) compromis.

45voto

Mike Allen Points 5616

C'est toujours une mauvaise idée de désactiver la vérification des certificats (paramètre http.sslVerify à false ).

Je pense que le problème ici est que, lorsque vous avez installé git vous avez choisi d'utiliser le Canal sécurisé Windows au lieu de la bibliothèque OpenSSL bibliothèque :

Git installation options

Comme l'a souligné @CurtJ.Sampson (merci, Curt !), vous pouvez passer à l'utilisation de l'option OpenSSL à la place, ce qui résoudra votre problème. Ceci peut être fait avec la commande suivante :

git config --global http.sslBackend openssl

Alternativement, vous pouvez réinstaller git en précisant le OpenSSL la bibliothèque dans le processus.

N'oubliez pas de tourner git La vérification SSL est de nouveau active :

git config --global http.sslVerify true

Mise à jour : Si vous utilisez des certificats auto-signés ou d'entreprise sur votre propre git et que vous obtenez une erreur lorsque vous tentez de vous y connecter (telle que certificat auto-signé dans la chaîne de certificats ou Problème de certificat SSL : impossible d'obtenir le certificat de l'émetteur local ), alors la solution consiste à dire git où trouver le CA qui a été utilisé pour signer le certificat de ce site. Vous pouvez le faire avec la commande de configuration suivante :

git config --global http.{your site's URL here}.sslcainfo "{path to your cert file}"

Par exemple, si vous disposez d'un serveur git local à l'adresse suivante https://my.gitserver.com/ et le CA qui a signé le certificat du site est en C:\Certs\MyCACert.crt alors vous devrez entrer :

git config --global http.https://my.gitserver.com/.sslcainfo "C:\Certs\MyCACert.crt"

Il s'agit d'une solution plus robuste que l'ajout de votre certificat d'autorité de certification à l'adresse suivante git L'offre groupée de ca-bundle.crt car ce fichier sera écrasé lors de la prochaine mise à jour de l'application git .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X