Comment définir GIT_SSL_NO_VERIFY pour des référentiels spécifiques uniquement?

284

Je dois utiliser un serveur git sans certificats appropriés, mais je ne veux pas avoir à le faire

env GIT_SSL_NO_VERIFY=true git command

chaque fois que je fais une opération git. Mais je voudrais également laisser SSL activé pour les autres dépôts git. Existe-t-il un moyen de rendre ce local à un seul dépôt?

Charles Randall
la source
f15ijp.com/2012/08/… l' une des meilleures solutions que j'ai trouvées
vikas etagi

Réponses:

542

Tu peux faire

git config http.sslVerify "false"

dans votre référentiel spécifique pour désactiver la vérification des certificats SSL pour ce référentiel uniquement.

Joachim Isaksson
la source
55
git config --global http.sslVerify "false"
roothahn
24
Le --global ne doit PAS être utilisé car l'OP a spécifiquement demandé qu'il ne le souhaite que pour des dépôts spécifiques.
Kannan Ekanath
9
Remarque: Il semble que l' --globaloption EST nécessaire lorsqu'un dépôt n'est PAS encore extrait (ne peut pas définir d'options pour un dépôt qui n'existe pas encore localement). On peut toujours le rallumer après.
James Wilkins
2
J'ai annulé la modification, car la question ne l'a pas spécifiquement demandé et c'est une mauvaise idée de le désactiver globalement pour des raisons de sécurité.
Étienne
2
J'ai annulé à nouveau l'édition, pour les mêmes raisons que ci-dessus. Cette question concerne un dépôt spécifique. Si vous voulez une réponse pour tous les dépôts, cela devrait être une question distincte.
Calimo
122

Vous pouvez faire comme suit

Pour un seul repo

git config http.sslVerify false

Pour tout repo

git config --global http.sslVerify false
Thirumalai murugan
la source
7
Cela désactivera la vérification SSL pour tous les référentiels. La question initiale était de la rendre locale à un seul référentiel.
Gwynne Raskind
4
Pourquoi diable utilisez-vous sudo? le dépôt local n'en a pas besoin, et la configuration utilisateur est dans $ HOME (quoi que ce soit sur votre système) donc il n'a pas besoin de sudo non plus.
mcepl
@ParthianShot s'ils ne sont pas l'utilisateur administrateur, comment peuvent-ils l'utiliser sans sudo?
Thirumalai murugan
1
@Thirumalaimurugan Êtes-vous sérieux en ce moment? sudone doit être utilisé que lorsque vous avez réellement besoin de root pour faire quelque chose. Comme installer de nouveaux logiciels, modifier des fichiers système importants, reformater des disques, reconfigurer le réseau, gérer des services ... Il n'y avait rien dans la question de ce type pour impliquer qu'il avait besoin de root pour faire quoi que ce soit. Si vous êtes administrateur, vous devriez exécuter la plupart de vos commandes, y compris celles qui modifient votre configuration, sans sudo la plupart du temps.
Parthian Shot
1
@HolaSoyEduFelizNavidad, Lorsque l'OP a dit "pour tous les repo", l'OP signifiait "tous les repos pour cet utilisateur," pas "tous les repos sur l'ordinateur."
vy32
98

Comme ce qu'a dit Thirumalai, mais à l'intérieur du référentiel cloné et sans --global. C'est à dire,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false
mcepl
la source
Bonne solution pour les cas où vouscould not lock global config file .gitconfig: Permission denied
antongorodezkiy
1
Si l'autorisation a été refusée sur .gitconfig, il y a quelque chose de sérieux avec votre système. Votre $ HOME devrait être à votre disposition (c'est là que devrait se trouver .gitconfig, n'est-ce pas?).
mcepl
Ce n'est pas vraiment mon serveur. Mais merci quand même. Et j'ai supprimé le chemin du message d'erreur, en fait sur ce serveur, git essaie d'accéder à .gitconfig quelque part dans/var/www/...
antongorodezkiy
Cette réponse contient également d'excellentes explications sur les options. stackoverflow.com/a/11622001
dragon788
2
export GIT_SSL_NO_VERIFY = true
ETech
11

En particulier si vous avez besoin d'un clone récursif

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git
user5958256
la source
10

Si vous êtes sur une machine Windows et que Git est installé, vous pouvez essayer les étapes ci-dessous:

  1. Allez dans le dossier d'installation de Git, ex: C: \ Program Files (x86) \ Git \ etc
  2. Modifiez le fichier: gitconfig
  3. Sous la section [http] , ajoutez la ligne: sslVerify = false

    [http]
      sslVerify = false
    
shasi kanth
la source
1
cela ne répond pas non plus à la question ci-dessus où il dit qu'il ne veut pas affecter les autres repos.
bryanmac
et c'est vraiment utile lorsque vous ne pouvez pas exécuter les commandes git! (ig ayant sourcetree sur une machine virtuelle Windows et plaçant le dossier src dans un chemin UNC dans lequel le terminal sorcetree intégré ne peut pas reconnaître!
danrah
1
thx, cela a fonctionné, en quelque sorte le correctif de ligne de commande ne fonctionnait pas.
Nrj
Pour les utilisateurs de TortoiseGit, vous pouvez modifier cette section dans le fichier de configuration local en effectuant une mise à jour des paramètres spécifiques au contexte et en sélectionnant l'option de modification locale uniquement
Steve Townsend
5

Il existe un moyen simple de configurer GIT pour gérer correctement votre serveur. Ajoutez simplement une section http spécifique pour votre serveur git et spécifiez le certificat (encodé en Base64) à approuver:

~ / .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

De cette façon, vous n'aurez plus d'erreurs SSL et validerez (généralement) le certificat auto-signé. C'est la meilleure façon de procéder, car elle vous protège des attaques de l'homme du milieu. Lorsque vous désactivez simplement la vérification SSL, vous êtes vulnérable à ce type d'attaques.

https://git-scm.com/docs/git-config#git-config-httplturlgt

Matthias B
la source
5

Si vous devez désactiver les vérifications SSL pour un serveur git hébergeant plusieurs référentiels, vous pouvez exécuter:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(Si vous utilisez toujours git <v1.8.5, exécutez git config --global http.https://my.bad.server.sslVerify false )

Explication de la documentation où se trouve la commande à la fin, affichez le .gitconfigcontenu comme suit:

[http "https://my.bad.server"]
        sslVerify = false

Il ignorera toutes les vérifications de certificats pour ce serveur, quel que soit le référentiel.

Vous avez également quelques explications dans le code

Mat M
la source
4

Cela fonctionne pour moi:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
Tadej
la source
2

Cette question revient sans cesse et je n'ai pas encore trouvé de résultat satisfaisant, alors voici ce qui a fonctionné pour moi (basé sur une réponse précédente https://stackoverflow.com/a/52706362/1806760 , qui ne fonctionne pas):

Mon serveur est https://gitlab.devavec un certificat auto-signé.

Exécutez d' abord git config --system --edit( à partir d' une commande élevée rapide, changement --systemde --globalsi vous voulez le faire pour que votre utilisateur), puis insérez l'extrait suivant après les précédentes [http]sections:

[http "https://gitlab.dev"]
        sslVerify = false

Vérifiez ensuite si vous avez tout fait correctement:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false
mrexodia
la source
1

pour Windows, si vous voulez une configuration globale, exécutez

git config --global http.sslVerify false
176 codage
la source
OP a demandé specific repos explicitement
malat
0

Sous Linux, si vous appelez cela dans le dossier du référentiel git:

git config http.sslVerify false

cela ajoutera sslVerify = falsedans la [http]section du configfichier dans le .gitdossier, ce qui peut également être la solution, si vous souhaitez l'ajouter manuellement avec nano .git/config:

...
[http]
  sslVerify = false
rubo77
la source