Como defino GIT_SSL_NO_VERIFY apenas para repositórios específicos?


283

Eu tenho que usar um servidor git sem certificados adequados, mas não quero fazer

env GIT_SSL_NO_VERIFY=true git command

toda vez que faço uma operação git. Mas também gostaria de deixar o SSL ativado para outros repositórios git. Existe uma maneira de tornar esse local em um único repositório?



f15ijp.com/2012/08/… uma das melhores soluções que encontrei
vikas etagi 22/03

Respostas:


540

Você pode fazer

git config http.sslVerify false

no seu repo específico para desativar a verificação de certificado SSL apenas para esse repo.


54
git config --global http.sslVerifique "false"
roothahn

24
O --global NÃO deve ser usado porque o OP solicitou especificamente que ele apenas o desejasse para repositórios específicos.
Kannan Ekanath

9
Nota: Parece que a --globalopção É necessária quando um repo ainda não está em check-out (não é possível definir opções para um repo que ainda não existe localmente). Pode-se sempre ligar novamente depois.
James Wilkins

2
Rolei a edição, já que a pergunta especificamente não solicitou isso, e é uma má idéia desabilitá-la globalmente por motivos de segurança.
Étienne

2
Retrocedi a edição novamente, pelos mesmos motivos acima. Esta pergunta é sobre um repositório específico. Se você deseja uma resposta para todos os repositórios, essa deve ser uma pergunta separada.
Calimo 26/03/19

121

Você pode fazer o seguinte

Para um único repo

git config http.sslVerify false

Para todos os repositórios

git config --global http.sslVerify false

7
Isso desativará a verificação SSL para todos os repositórios. A pergunta original era sobre torná-lo local para um único repositório.
Gwynne Raskind

4
Por que no mundo você está usando o sudo? o repositório local não precisa dele, e a configuração do usuário está em $ HOME (o que quer que esteja no seu sistema), portanto, também não precisa do sudo.
Mc # 30315

@ParthianShot se eles não são o usuário administrador, como eles podem usar isso sem o sudo?
Thirumalai murugan

1
@Thirumalaimurugan Você está falando sério agora? sudosó deve ser usado quando você realmente precisa de raiz para fazer alguma coisa. Como instalar um novo software, modificar arquivos importantes do sistema, reformatar unidades, reconfigurar a rede, gerenciar serviços ... Não havia nada na pergunta desse cara que sugerisse que ele precisava de raiz para fazer qualquer coisa. Se você é um administrador, deve executar a maioria dos seus comandos - incluindo aqueles que alteram sua configuração - sem o sudo na maioria das vezes.
Tiro parta

1
@HolaSoyEduFelizNavidad, Quando o OP disse "for all repo", o OP significava "todos os repositórios para este usuário", não "todos os repositórios no computador".
vy32

98

Como o que Thirumalai disse, mas dentro e fora do repositório clonado --global. Ou seja,

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

Boa solução para casos em que vocêcould not lock global config file .gitconfig: Permission denied
antongorodezkiy

1
Se você tiver permissão negada no .gitconfig, há algo seriamente pesquisado em seu sistema. Seu $ HOME deve estar disponível para você (que é onde .gitconfig deveria estar, não deveria?).
Mc # 30715

Este não é realmente o meu servidor. Mas obrigado de qualquer maneira. E eu removi o caminho da mensagem de erro, na verdade, nesse servidor, o git está tentando acessar .gitconfig em algum lugar dentro/var/www/...
antongorodezkiy 30/15/15

Esta resposta também tem ótimas explicações sobre as opções. stackoverflow.com/a/11622001
dragon788

2
exportar GIT_SSL_NO_VERIFY = true
ETech

11

Em particular, se você precisar de clones recursivos

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

10

Se você estiver em uma máquina Windows e tiver o Git instalado, tente as etapas abaixo:

  1. Vá para a pasta de instalação do Git, ex: C: \ Arquivos de Programas (x86) \ Git \ etc
  2. Edite o arquivo: gitconfig
  3. Na seção [http] , adicione a linha: sslVerify = false

    [http]
      sslVerify = false
    

1
isso também não atende à pergunta acima, onde ele diz que não deseja afetar outros repositórios.
Bryanmac

e é realmente útil quando você não pode executar comandos git! (Ig tendo sourcetree em uma máquina virtual do Windows e colocando a pasta src em um caminho UNC em que built-in sorcetree terminal não pode reconhecer!
danrah

1
thx, isso funcionou, de alguma forma a correção da linha de comando não estava funcionando.
Nrj

Para usuários TortoiseGit, você pode editar esta seção no arquivo de configuração local, fazendo uma atualização de configurações específicas ao contexto e selecionando a opção de editar local apenas
Steve Townsend

5

Existe uma maneira fácil de configurar o GIT para lidar com o servidor da maneira certa. Basta adicionar uma seção http específica ao seu servidor git e especificar em qual certificado (codificado em Base64) confiar:

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

Dessa forma, você não terá mais erros de SSL e validará o (geralmente) certificado autoassinado. Este é o melhor caminho a seguir, pois protege você contra ataques do tipo intermediário. Quando você desativa a verificação de SSL, fica vulnerável a esse tipo de ataque.

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


5

Se você precisar desativar as verificações de SSL para um servidor git que hospeda vários repositórios, poderá executar:

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

(Se você ainda usa o git <v1.8.5, execute git config --global http.https://my.bad.server.sslVerify false )

Explicação da documentação em que o comando está no final, mostra o .gitconfigconteúdo parecido com:

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

Ele ignorará qualquer verificação de certificado para este servidor, qualquer que seja o repositório.

Você também tem alguma explicação no código


4

Isso funciona para mim:

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

2

Essa pergunta continua aparecendo e eu ainda não encontrei um resultado satisfatório. Eis o que funcionou para mim (com base em uma resposta anterior https://stackoverflow.com/a/52706362/1806760 , que não está funcionando):

Meu servidor está https://gitlab.devcom um certificado autoassinado.

Execute primeiro git config --system --edit(a partir de um prompt de comando elevado, altere --systempara --globalse você desejar fazê-lo apenas para o usuário) e, em seguida, insira o seguinte trecho após as [http]seções anteriores :

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

Em seguida, verifique se você fez tudo corretamente:

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

1

para windows, se você quiser configuração global, execute

git config --global http.sslVerify false

OP solicitado specific reposexplicitamente
malat 25/05

0

No Linux, se você chamar isso dentro da pasta do repositório git:

git config http.sslVerify false

isso será adicionado sslVerify = falsena [http]seção do configarquivo na .gitpasta, que também pode ser a solução, se você desejar adicionar isso manualmente com nano .git/config:

...
[http]
  sslVerify = false
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.