Estou usando o Git no Windows. Eu instalei o pacote msysGit. Meu repositório de teste possui um certificado autoassinado no servidor. Eu posso acessar e usar o repositório usando HTTP sem problemas. Mover para HTTPS fornece o erro:
Problema no certificado SSL: não é possível obter o certificado do emissor local.
Eu tenho o certificado autoassinado instalado nas Autoridades de Certificação Raiz Confiáveis da minha máquina cliente com Windows 7. Posso navegar até a URL do repositório HTTPS no Internet Explorer sem mensagens de erro.
Esta postagem no blog de Philip Kelley explicou que o cURL não usa o armazenamento de certificados da máquina cliente. Segui o conselho da postagem no blog para criar uma cópia privada curl-ca-bundle.crt
e configurar o Git para usá-lo. Tenho certeza que o Git está usando minha cópia. Se eu renomear a cópia; O Git reclama que o arquivo está faltando.
Colei no meu certificado, conforme mencionado na postagem do blog, ainda recebo a mensagem "Impossível obter o certificado do emissor local".
Eu verifiquei que o Git ainda estava funcionando clonando um repositório do GitHub via HTTPS.
A única coisa que vejo diferente da postagem do blog é que meu certificado é a raiz - não há corrente para alcançá-lo. Meu certificado veio originalmente de clicar no link IIS8 IIS Manager 'Criar certificado autoassinado'. Talvez isso faça com que um certificado seja diferente de alguma forma do que o cURL espera.
Como faço para o Git / cURL aceitar o certificado autoassinado?
{ "strict-ssl": false }
. Não me agradeça, agradeça a esse cara: stapp.space/fight-with-2 Eu lutei com esse erro por quase 5 horas, direto !!Respostas:
Abra o Git Bash e execute o comando se desejar desativar completamente a verificação SSL.
Nota: Esta solução pode abrir você para ataques como ataques man-in-the-middle . Portanto, ative a verificação novamente o mais rápido possível:
fonte
git -c http.sslVerify=false clone https://domain.com/path/to/git
O problema é que o git, por padrão, usa o back-end de criptografia "Linux".
A partir do Git para Windows 2.14, agora você pode configurar o Git para usar o SChannel, a camada de rede interna do Windows como o back-end de criptografia. Isso significa que você usará o mecanismo de armazenamento de certificados do Windows e não precisará configurar explicitamente o mecanismo de armazenamento da CA de ondulação: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx
Basta executar:
Isso deve ajudar.
O uso do schannel agora é a configuração padrão ao instalar o git para Windows, também é recomendável não efetuar o check-out dos repositórios pelo SSH, se possível, pois o https é mais fácil de configurar e menos provável de ser bloqueado por um firewall, significa menos chances de falha.
fonte
git config --global http.sslCAInfo <my-server-self-signed-cert.pem>
deixar de funcionar. Configureihttp.sslCAInfo
para usar um certificado autoassinado para o meu servidor, e é o motivo (pode não ser o mesmo que OP) que encontrei "Problema no certificado SSL: não é possível obter o certificado do emissor local" quando, por exemplo, agit clone https://github.com/Microsoft/vscode.git
. Finalmente, usei a resposta de stackoverflow.com/a/47196562/1323552 (Ben PP Tung) para ajustar minha configuração sslCAInfo específica do meu servidor git para resolvê-lo.Eu tive esse problema também. No meu caso, eu estava tentando obter um gancho Git pós-recebimento para atualizar uma cópia de trabalho em um servidor a cada push. Tentei seguir as instruções no blog ao qual você vinculou. Também não funcionou para mim e substituir as configurações por usuário também não pareceu funcionar.
O que acabei fazendo foi desabilitar a verificação SSL (como o artigo menciona) para o Git como um todo. Não é a solução perfeita, mas funcionará até que eu possa descobrir uma melhor.
Editei o arquivo de texto de configuração do Git (com meu aplicativo neutro de final de linha favorito como o Notepad ++) localizado em:
No bloco [http], adicionei uma opção para desativar o sslVerify. Ficou assim quando eu terminei:
Isso fez o truque.
NOTA:
Isso desativa a verificação SSL e não é recomendada como uma solução de longo prazo.
Você pode desativar esse repositório por repositório, o que ainda não é ótimo, mas localiza a configuração.
Com o advento do LetsEncrypt.org, agora é bastante simples, automatizado e gratuito configurar o SSL como uma alternativa aos certificados autoassinados e nega a necessidade de desativar o sslVerify.
fonte
sslCAinfo
entrada de configuração; mas não estou votando positivamente na resposta, pois não faz muito sentido desabilitar permanentemente o SSL para o git em todo o sistema (você tentou desabilitá-lo em todo o sistema, cloná-lo, reativá-lo e desabilitá-lo no diretório configuração git local para o repositório recém-clonado?).git -c http.sslVerify=false clone https://...
kiddailey Eu acho que estava bem próximo, no entanto, eu não desativaria a verificação ssl, mas apenas forneceria o certificado local:
No arquivo de configuração do Git
Ou via linha de comando:
fonte
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
git config --list --show-origin
para ver onde a configuração do http.sslCAinfo está definida.Eu também enfrentei esse problema. E, finalmente, foi resolvido com a orientação deste blog do MSDN .
Atualizar
Na verdade, você precisa adicionar o certificado no arquivo de certificados do git curl-ca-bundel.cert que reside no diretório Git \ bin.
Passos
Por fim, verifique o status. Observe que o arquivo curl-ca-bundle.crt de backup antes de editar permanece no lado seguro.
fonte
ca-bundle.crt
e estar localizado emmingw64\ssl\certs
oumingw32\ssl\certs
.A resposta para esta pergunta O uso do makecert for Development SSL corrigiu isso para mim.
Não sei por que, mas o certificado criado pelo simples link 'Criar certificado autoassinado' no Gerenciador do IIS não funciona. Eu segui a abordagem na questão vinculada de criação e instalação de um CA Root autoassinado; usando-o para emitir um certificado de autenticação de servidor para o meu servidor. Eu instalei os dois no IIS.
Isso deixa minha situação igual à postagem de blog mencionada na pergunta original. Depois que o certificado raiz foi copiado / colado no curl-ca-bundle.crt, a combinação git / curl foi satisfeita.
fonte
Para evitar desabilitar a verificação ssl completamente ou duplicar / invadir o arquivo de certificado CA empacotado usado pelo git, você pode exportar a cadeia de certificados do host para um arquivo e fazer com que o git a use:
Se isso não funcionar, você pode desativar a verificação SSL apenas para o host:
Nota: Submetido a possíveis ataques man in the middle quando a verificação ssl está desativada.
fonte
--global
opção não é necessária: se você omitir--global
, a configuração se aplica apenas a esse repositório git específico.Acabei de ter o mesmo problema, mas usando o sourcetree no Windows As mesmas etapas para o GIT normal no Windows também. Seguindo as etapas a seguir, consegui resolver esse problema.
Isso deve resolver seu problema com os certificados autoassinados e usando o GIT.
Tentei usar a configuração "http.sslcapath", mas isso não funcionou. Além disso, se eu não incluísse toda a cadeia no arquivo de certificados, isso também falharia. Se alguém tiver dicas sobre isso, entre em contato, pois o procedimento acima deve ser repetido para uma nova instalação.
Se este for o GIT do sistema, você poderá usar as opções na guia FERRAMENTAS -> Opções GIt para usar o GIT do sistema e isso resolverá o problema no código fonte também.
fonte
No caso dos Repositórios do github (ou qualquer documento não autoassinado) , a escolha abaixo ao instalar o Git-on-windows, resolveu o problema.
fonte
Eu já tive esse problema antes e resolva-o usando a seguinte configuração.
[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate
Desde o git 2.3.1, você pode colocar
https://your.domain
após http para indicar que o certificado a seguir é apenas para ele.fonte
git config --global http.sslCAInfo <your-server-self-signed-cert.pem>
antes (portanto, causando o "incapaz de obter certificado do emissor local" erro)C:\Program Files\Git\bin
eC:\Program Files\Git\mingw64\bin
Em seguida, tente algo como:
git clone https://github.com/heroku/node-js-getting-started.git
fonte
Uma coisa que me atrapalhou foi o formato do caminho (no meu PC com Windows). Eu originalmente tinha isso:
Mas isso falhou com o erro "não é possível obter o certificado do emissor local".
O que finalmente funcionou foi o seguinte:
fonte
No meu caso, como eu instalei o ConEmu Terminal para Windows 7, ele cria o
ca-bundle
durante a instalação emC:\Program Files\Git\mingw64\ssl\certs
.Portanto, eu tenho que executar os seguintes comandos no terminal para fazê-lo funcionar:
Portanto, my
C:\Program Files\Git\etc\gitconfig
contém o seguinte:Além disso, escolhi a mesma opção mencionada aqui ao instalar o Git.
Espero que ajude!
fonte
Para corrigir o problema específico do certificado SSL do erro : não é possível obter o certificado do emissor local no git
Eu tive o mesmo problema com os certificados Let's Encrypt.
Um site com https é necessário:
mas git pull diz:
Para corrigi-lo, também precisamos adicionar:
fonte
Use este comando antes para executar a atualização / instalação do compositor:
fonte