Usando o Git, existe uma maneira de dizer para aceitar um certificado autoassinado?
Estou usando um servidor https para hospedar um servidor git, mas por enquanto o certificado é autoassinado.
Quando tento criar o repositório pela primeira vez:
git push origin master -f
Eu recebo o erro:
error: Cannot access URL
https://the server/git.aspx/PocketReferences/, return code 22
fatal: git-http-push failed
git
version-control
https
self-signed
Ian Vink
fonte
fonte
sslcainfo
opção. se você pode usarcurl --cacert
com êxito para obter o caminho do repositório, mas o git não estiver funcionando, adicione o certificado ao misterioso programa OSX Keychain. mais aqui superuser.com/questions/605900/…Respostas:
Para aceitar permanentemente um certificado específico
Tente
http.sslCAPath
ouhttp.sslCAInfo
. A resposta de Adam Spiers dá alguns ótimos exemplos. Esta é a solução mais segura para a pergunta.Para desativar a verificação TLS / SSL para um único comando git
tente passar
-c
paragit
com a variável de configuração adequada, ou usar a resposta de fluxo :Para desativar a verificação SSL para um repositório específico
Se o repositório estiver completamente sob seu controle, você pode tentar:
Existem várias opções de configuração SSL no
git
. Na página do manual degit config
:Algumas outras opções úteis de configuração SSL:
fonte
git -c http.sslVerify=false clone https://domain.com/path/to/git
resolveu o meu problema, obrigado ... #Você pode definir
GIT_SSL_NO_VERIFY
paratrue
:ou configure o Git para não verificar a conexão na linha de comando:
Observe que, se você não verificar os certificados SSL / TLS, estará suscetível a ataques do MitM .
fonte
-c
sinalizadorgit
para modificar um valor de configuração para um único comando. Eu acho que essa sintaxe é mais limpa, no entanto.-c
git. Na verdade, acho que é a solução mais limpa, em vez de poluir o meio ambiente. :)git -c http.sslVerify=false <gitSubCommand>
também pode funcionar através de intermediários.Não sou muito fã das respostas [EDIT: versões originais das] existentes, porque desabilitar as verificações de segurança deve ser o último recurso, não a primeira solução oferecida. Mesmo que você não possa confiar em certificados autoassinados no primeiro recebimento sem algum método adicional de verificação, o uso do certificado para
git
operações subseqüentes dificulta muito a vida de ataques que só ocorrem após o download do certificado. Em outras palavras, se o certificado baixado for genuíno, você será bom a partir desse ponto em diante. Por outro lado, se você simplesmente desabilitar a verificação, estará aberto a qualquer tipo de ataque man-in-the-middle a qualquer momento .Para dar um exemplo específico: o famoso
repo.or.cz
repositório fornece um certificado autoassinado . Eu posso baixar esse arquivo, colocá-lo em algum lugar como/etc/ssl/certs
e, em seguida, fazer:Observe que usar local
git config
aqui (ou seja, sem--global
) significa que esse certificado autoassinado é confiável apenas para este repositório específico, o que é bom. Também é melhor do que usar,GIT_SSL_CAPATH
pois elimina o risco degit
fazer a verificação por meio de uma Autoridade de Certificação diferente, que pode ser comprometida.fonte
/etc/ssl/certs/
diretório e resolver com eficiência tudo o que você precisa. Não testei isso, lembre-se, mas pode permitir que você use um--global
com um monte de certs. Vale a pena testar, no entanto.git config http.validCertFingerprint <base64-encoded-hash-of-certifcate>
git clone --config http.sslCAInfo=<path_to_cert> https://repo.or.cz/org-mode.git
(Não é necessário chamar um comando 'git config' depois).Configuração de certificado autoassinado Git
tl; dr
As chaves de configuração que você procura são:
http.sslverify
- Sempre verdade. Veja a nota acima.Estes são para configurar certificados de host nos quais você confia
http.sslCAPath
http.sslCAInfo
Estes são para configurar o seu certificado para responder aos desafios do SSL.
http.sslCert
http.sslCertPasswordProtected
Aplique seletivamente as configurações acima a hosts específicos.
http.<url>.*
Global
.gitconfig
para autoridades de certificação autoassinadasPara meu bem e dos meus colegas, aqui é como conseguimos que os certificados autoassinados funcionem sem desativar
sslVerify
. Edite seu arquivo.gitconfig
paragit config --global -e
adicionar estes:Referências:
Especifique a configuração ao
git clone
-ingSe você precisar aplicá-lo por repo, a documentação solicitará que você execute
git config --local
no diretório repo. Bem, isso não é útil quando você não tem o repositório clonado localmente, mas agora é?Você pode fazer o
global -> local
hokey-pokey definindo sua configuração global como acima e, em seguida, copiá-las para sua configuração de repositório local, uma vez que clona ...OU o que você pode fazer é especificar comandos de configuração
git clone
que serão aplicados ao repositório de destino depois que ele for clonado.One Liner
EDIT: Veja a resposta do VonC que aponta uma ressalva sobre caminhos absolutos e relativos para versões específicas do git de 2.14.x / 2.15 para este liner
CentOS
unable to load client key
Se você está tentando fazer isso no CentOS e seu
.pem
arquivo está fornecendoEntão você vai querer esta resposta StackOverflow sobre como
curl
usa o NSS em vez do Open SSL.E você deseja reconstruir a
curl
partir da fonte :reinicie o computador, pois a libcurl ainda está na memória como uma biblioteca compartilhada
Python, pip e conda
Relacionado : Como adicionar um certificado raiz da CA personalizado ao CA Store usado pelo pip no Windows?
fonte
http.sslCAPath
. No meu caso, eu tive que usarhttp.sslCAInfo
para especificar o arquivo específico. Permitir que o Git se conecte ao nosso GitHub privado sem desativar a validação SSL.Eu continuo encontrando esse problema, então escrevi um script para baixar o certificado autoassinado do servidor e instalá-lo em ~ / .gitcerts, e atualize o git-config para apontar para esses certificados. Ele é armazenado na configuração global, portanto, você só precisa executá-lo uma vez por controle remoto.
https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh
fonte
Esta resposta foi extraída deste artigo de autoria de Michael Kauffman.
Use o Git for Windows com um certificado SSL corporativo
Edição :
Se você possui um certificado SSL corporativo e deseja clonar seu repositório no console ou no VSCode, obtém o seguinte erro:
fatal: não é possível acessar ' https: // myserver / tfs / DefaultCollection / _git / Proj / ': problema com o certificado SSL: não é possível obter o certificado do emissor local
Solução :
Exporte o certificado autoassinado raiz para um arquivo. Você pode fazer isso de dentro do seu navegador.
Localize o arquivo “ca-bundle.crt” na sua pasta git (versão atual C: \ Arquivos de Programas \ Git \ usr \ ssl \ certs, mas foi alterado no passado). Copie o arquivo para o seu perfil de usuário. Abra-o com um editor de texto como o VSCode e adicione o conteúdo do seu certificado exportado ao final do arquivo.
Agora temos que configurar o git para usar o novo arquivo:
git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt
Isso adicionará a seguinte entrada ao seu arquivo .gitconfig na raiz do seu perfil de usuário.
[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt
fonte
Para desativar a verificação SSL para um repositório específico Se o repositório estiver completamente sob seu controle, você pode tentar:
fonte
Tenha cuidado quando você estiver usando um forro usando SslKey ou sslcert, como em Josh Peak 's resposta :
Somente o Git 2.14.x / 2.15 (terceiro trimestre de 2015) seria capaz de interpretar um caminho como
~username/mykey
corretamente (embora ainda possa interpretar um caminho absoluto como/path/to/privatekey
).Veja commit 8d15496 (20 de julho de 2017) por Junio C Hamano (
gitster
) .Ajudado por: Charles Bailey (
hashpling
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 17b1e1d , 11 de agosto de 2017)fonte
Usando a versão de 64 bits do Git no Windows, basta adicionar o certificado CA autoassinado nesses arquivos:
Se for apenas um certificado autoassinado do servidor, adicione-o
fonte
Verifique suas configurações de antivírus e firewall.
De um dia para o outro, o git não funcionava mais. Com o que foi descrito acima, descobri que a Kaspersky coloca no meio um certificado raiz pessoal do Anti-virus autoassinado. Não consegui deixar o Git aceitar esse certificado seguindo as instruções acima. Eu desisti disso. O que funciona para mim é desativar o recurso de Verificar conexões criptografadas.
Depois disso, o git funciona novamente com o sslVerify ativado.
Nota. Isso ainda não é satisfatório para mim, porque eu gostaria de ter esse recurso do meu antivírus ativo. Nas configurações avançadas, o Kaspersky mostra uma lista de sites que não funcionarão com esse recurso. O Github não está listado como um deles. Vou verificá-lo no fórum da Kaspersky. Parece haver alguns tópicos, por exemplo, https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211
fonte
No arquivo .gitconfig, você pode adicionar o valor abaixo indicado para tornar aceitável o certificado autoassinado
sslCAInfo = /home/XXXX/abc.crt
fonte
Eu faço assim:
fonte
--global
! Muitos tutoriais são exibidos,--global
mas é uma péssima ideia em geral ehttp.sslVerify
em particular. Assim que você tiver mais de um clone de diferentes projetos, empresas, equipes no computador, poderá encontrar problemas rapidamente. Por exemplo, a identificação do usuário e os e-mails vazando de um projeto para o outro podem ser bastante embaraçosos. E usar--global
onhttp.sslVerify
pode abrir você para todos os tipos de problemas de segurança. Portanto: não use--global
- a menos que esteja totalmente ciente dos efeitos colaterais e esteja preparado para correr o risco.No Windows, isso funcionou para mim:
Adicione o conteúdo do seu certificado autoassinado ao final do arquivo ca-bundle . Incluindo o ----- COMEÇAR CERTIFICADO ----- e ----- TERMINAR CERTIFICADO ----- linhas
A localização do arquivo ca-bundle geralmente é C: \ Arquivos de Programas \ Git \ mingw64 \ ssl \ certs
Depois, adicione o caminho do pacote CA arquivo à configuração global do git. O seguinte comando faz o truque:
git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"
Observação: o caminho depende do caminho local do arquivo ca-bundle!
fonte
Eu uso uma máquina Windows e este artigo me ajudou. Basicamente, abri o ca-bundle.crt no bloco de notas e adicionei certificados de cadeia (todos eles). Esse problema geralmente ocorre em redes de empresas onde temos intermediários sentados entre o sistema e o repositório git. Precisamos exportar todos os certificados na cadeia de certificados, exceto o certificado de folhas no formato base 64 e adicioná-los ao ca-bundle.crt e, em seguida, configurar o git para esse arquivo crt modificado.
fonte
Não é uma boa prática definir http.sslVerify false. Em vez disso, podemos usar o certificado SSL.
Portanto, o agente de construção usará https com certificado SSL e PAT para autenticação.
Copie o conteúdo do arquivo cer, incluindo –begin — e –end--.
git bash no agente de construção => git config –global http.sslcainfo “C: / Arquivos de Programas / Git / mingw64 / ssl / certs / ca-bundle.crt” Vá para este arquivo e anexe o conteúdo .cer.
Assim, o agente de construção pode acessar o certificado SSL
fonte
Minha resposta pode estar atrasada, mas funcionou para mim. Pode ajudar alguém.
Tentei as etapas acima mencionadas e isso não resolveu o problema.
tente isso
git config --global http.sslVerify false
fonte