Come posso impostare GIT_SSL_NO_VERIFY solo per repository specifici?


283

Devo usare un server Git senza certificati adeguati, ma non voglio farlo

env GIT_SSL_NO_VERIFY=true git command

ogni volta che faccio un'operazione git. Ma vorrei anche lasciare SSL abilitato per altri repository git. C'è un modo per rendere questo locale in un singolo repository?



f15ijp.com/2012/08/… una delle migliori soluzioni che ho trovato
vikas etagi il

Risposte:


541

Tu puoi fare

git config http.sslVerify "false"

nel proprio repository specifico per disabilitare il controllo del certificato SSL solo per quel repository.


55
git config --global http.sslVerify "false"
roothahn

24
--Global NON deve essere usato perché l'OP ha richiesto espressamente di volerlo solo per repository specifici.
Kannan Ekanath,

9
Nota: sembra che l' --globalopzione È necessaria quando un repository NON è ancora stato estratto (non è possibile impostare le opzioni per un repository che non esiste ancora localmente). Si può sempre riaccenderlo dopo.
James Wilkins,

2
Ho eseguito il rollback della modifica, dal momento che la domanda in particolare non ha richiesto questo, inoltre è una cattiva idea disabilitarlo a livello globale per motivi di sicurezza.
Étienne,

2
Ho eseguito nuovamente il rollback della modifica, per gli stessi motivi di cui sopra. Questa domanda riguarda un repository specifico. Se vuoi una risposta per tutti i repository, questa dovrebbe essere una domanda separata.
Calimo,

121

Puoi fare come segue

Per un singolo repository

git config http.sslVerify false

Per tutti i repo

git config --global http.sslVerify false

7
Ciò disabiliterà la verifica SSL per tutti i repository. La domanda originale era di renderlo locale in un singolo repository.
Gwynne Raskind,

4
Perché nel mondo stai usando sudo? il repository locale non ne ha bisogno e la configurazione dell'utente è in $ HOME (qualunque cosa sia sul tuo sistema) quindi non ha nemmeno bisogno di sudo.
martedì

@ParthianShot se non sono gli amministratori come possono usarlo senza sudo?
Thirumalai murugan,

1
@Thirumalaimurugan Sei serio adesso? sudodovrebbe essere usato solo quando hai davvero bisogno di root per fare qualcosa. Come installare un nuovo software, modificare file di sistema importanti, riformattare unità, riconfigurare la rete, gestire i servizi ... Non c'era nulla nella domanda di questo ragazzo che implicava che aveva bisogno di root per fare qualcosa. Se sei un amministratore, dovresti eseguire la maggior parte dei tuoi comandi, inclusi quelli che cambiano la tua configurazione, senza sudo per la maggior parte del tempo.
Parthian Shot

1
@HolaSoyEduFelizNavidad, Quando l'OP ha detto "per tutti i repository", l'OP significava "tutti i repository per questo utente", non "tutti i repository sul computer".
vy32,

98

Come quello che ha detto Thirumalai, ma all'interno del repository clonato e senza --global. Vale a dire,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false

Buona soluzione per i casi in cuicould not lock global config file .gitconfig: Permission denied
antongorodezkiy,

1
Se hai il permesso negato su .gitconfig c'è qualcosa di gravemente compromesso con il tuo sistema. Il tuo $ HOME dovrebbe essere disponibile per te (che è dove dovrebbe essere .gitconfig, non è vero?).
martedì

Questo non è in realtà il mio server. Ma grazie comunque. E ho rimosso il percorso dal messaggio di errore, in realtà su quel server git sta cercando di accedere a .gitconfig da qualche parte in/var/www/...
antongorodezkiy

Questa risposta ha anche delle ottime spiegazioni sulle opzioni. stackoverflow.com/a/11622001
dragon788

2
export GIT_SSL_NO_VERIFY = true
ETech,

11

In particolare se hai bisogno di un clone ricorsivo

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git

10

Se sei su un computer Windows e hai installato Git, puoi provare i seguenti passaggi:

  1. Vai alla cartella dell'installazione di Git, ad esempio: C: \ Programmi (x86) \ Git \ etc
  2. Modifica il file: gitconfig
  3. Nella sezione [http] , aggiungi la riga: sslVerify = false

    [http]
      sslVerify = false
    

1
anche questo non soddisfa la domanda sopra in cui dice che non vuole influenzare altri repository.
bryanmac,

ed è davvero utile quando non puoi eseguire comandi git! (ad esempio, avendo sourcetree su una macchina virtuale Windows e posizionando la cartella src in un percorso UNC in cui il terminale sorcetree incorporato non è in grado di riconoscere!
danrah,

1
grazie, ha funzionato, in qualche modo la correzione della riga di comando non funzionava.
Nrj

Per gli utenti di TortoiseGit, è possibile modificare questa sezione nel file di configurazione locale facendo un aggiornamento delle Impostazioni specifico del contesto e selezionando l'opzione per modificare solo il locale
Steve Townsend

5

C'è un modo semplice di configurare GIT per gestire il tuo server nel modo giusto. Basta aggiungere una specifica sezione http per il proprio server git e specificare quale certificato (codificato Base64) di cui fidarsi:

~ / .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

In questo modo non si verificheranno più errori SSL e si convaliderà il certificato (di solito) autofirmato. Questo è il modo migliore di procedere, poiché ti protegge dagli attacchi man-in-the-middle. Quando disabiliti la verifica ssl sei vulnerabile a questo tipo di attacchi.

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


5

Se devi disabilitare i controlli SSL per un server git che ospita diversi repository, puoi eseguire:

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

(Se usi ancora git <v1.8.5, esegui git config --global http.https://my.bad.server.sslVerify false)

Spiegazione dalla documentazione in cui il comando è alla fine, mostra il .gitconfigcontenuto come:

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

Ignorerà qualsiasi controllo del certificato per questo server, qualunque sia il repository.

Hai anche qualche spiegazione nel codice


4

Questo funziona per me:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git

2

Questa domanda continua a venire e non ho ancora trovato un risultato soddisfacente, quindi ecco cosa ha funzionato per me (basato su una risposta precedente https://stackoverflow.com/a/52706362/1806760 , che non funziona):

Il mio server ha https://gitlab.devun certificato autofirmato.

Prima esecuzione git config --system --edit(da un prompt dei comandi con privilegi elevati, passare --systema --globalse si desidera farlo solo per l'utente), quindi inserire il frammento seguente dopo le [http]sezioni precedenti :

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

Quindi controlla se hai fatto tutto correttamente:

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

1

per Windows, se si desidera la configurazione globale, quindi eseguire

git config --global http.sslVerify false

OP ha chiesto specific reposesplicitamente
malat

0

Su Linux, se lo chiami nella cartella del repository git:

git config http.sslVerify false

questo verrà aggiunto sslVerify = falsenella [http]sezione del configfile nella .gitcartella, che può anche essere la soluzione, se si desidera aggiungere questo manualmente con nano .git/config:

...
[http]
  sslVerify = false
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.