TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
Resposta longa
O motivo básico é que o computador não confia na autoridade de certificação que assinou o certificado usado no servidor Gitlab . Isso não significa que o certificado seja suspeito, mas pode ser autoassinado ou assinado por uma instituição / empresa que não esteja na lista da lista de CAs do seu sistema operacional. O que você precisa fazer para contornar o problema no seu computador é dizer para confiar nesse certificado - se você não tiver nenhum motivo para suspeitar disso.
Você precisa verificar o certificado da web usado para o seu servidor gitLab e adicioná-lo ao seu </git_installation_folder>/bin/curl-ca-bundle.crt
.
Para verificar se pelo menos o clone funciona sem verificar o certificado, você pode definir:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Mas isso seria apenas para teste, conforme ilustrado em "O SSL funciona com o navegador, wget e curl, mas falha com o git ", ou nesta postagem do blog .
Verifique as configurações do GitLab, na edição 4272 .
Para obter esse certificado (que você precisaria adicionar ao seu curl-ca-bundle.crt
arquivo), digite a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(com ' yourserver.com
' sendo o nome do servidor GitLab e YourHttpsGitlabPort
é a porta https, geralmente 443
)
Para verificar a CA (emissor da autoridade de certificação), digite a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Nota: Valeriy Katkov sugere nos comentários a -servername
opção de adicionar ao comando openssl, caso contrário, o comando não recebe certificado para www.github.com no caso de Valeriy.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano acrescenta nos comentários :
para identificar a localização de curl-ca-bundle.crt
, você pode usar o comando
curl-config --ca
Além disso, consulte minha resposta mais recente " github: falha na verificação do certificado do servidor ": talvez seja necessário renistar novamente esses certificados:
sudo apt-get install --reinstall ca-certificates
sudo mkdir /usr/local/share/ca-certificates/cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
sudo update-ca-certificates
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
curl-config --ca
retornado/etc/ssl/certs/ca-certificates.crt
, que é onde eu tive que adicionar o certificado. Para além de que esta resposta era a primeira informação me apontar na direção certa com esta questãowhich git
.curl-config --ca
, mas nada foi devolvido.Abra seu terminal e execute o seguinte comando:
Funciona para mim e estou usando o sistema Linux.
fonte
git config --global http.sslverify false
Outra causa desse problema pode ser que seu relógio esteja desligado. Os certificados são sensíveis ao tempo.
Para verificar a hora atual do sistema:
Você pode considerar a instalação do NTP para sincronizar automaticamente a hora do sistema com servidores de horário da Internet confiáveis do pool NTP global . Por exemplo, para instalar no Debian / Ubuntu:
fonte
git
por assim dizer, é a troca SSL subjacente. O Git é construído com suporte a SSL.Se você estiver usando um servidor git dentro de uma rede privada e estiver usando um certificado autoassinado ou um certificado em um endereço IP; você também pode simplesmente usar a configuração global do git para desativar as verificações de ssl:
fonte
Teve o mesmo problema. Causada pela autoridade de certificação auto-emitida. Resolvi adicionando o arquivo .pem em / usr / local / share / ca-certificates / e chamando
PS: arquivo pem na pasta ./share/ca-certificates DEVE ter extensão .crt
fonte
Verifique o relógio do sistema,
$ date
Se não estiver correto, a verificação do certificado falhará. Para corrigir o relógio do sistema,
$ apt-get install ntp
O relógio deve sincronizar-se.
Por fim, insira o comando clone novamente.
fonte
deve lhe dizer onde está o problema. No meu caso, era devido ao cURL não suportar certificados PEM quando criados contra o NSS, devido a esse suporte não ser principal no NSS ( # 726116 # 804215 # 402712 e mais ).
fonte
GIT_CURL_VERBOSE
. Eu não mencionei isso na minha resposta. 1Ou simplesmente execute este comentário para adicionar o certificado do servidor ao seu banco de dados:
Então git clone novamente.
fonte
Eu errei com meus arquivos CA enquanto configurava o proxy goagent. Não é possível extrair dados do github e recebe o mesmo aviso:
use o método Vonc, obtenha o certificado no github e coloque-o no /etc/ssl/certs/ca-certificates.crt, problema resolvido.
fonte
não é necessário definir a verificação git ssl para definir como false. É causado quando o sistema não possui todos os certificados de autoridade de autoridade de certificação. Principalmente as pessoas que possuem certificado SSL genuíno sem o certificado intermediário.
Apenas adicionando o texto completo do certificado intermediário (toda a cadeia de CA e certificado intermediário ausentes) a
funciona sem executar o
update-ca-certificates
.O mesmo vale para certificados gerados manualmente, basta adicionar o texto do certificado da CA.
No final: Empurre com sucesso: tudo está atualizado
fonte
O que fiz para resolver este problema no terminal (Ubuntu 18.04):
Eu tenho dois pedaços de pedaços de certificado. E eu copiei os pedaços de certificado para o meu arquivo de certificado para
/etc/ssl/certs/ca-certificates.crt
.fonte
---BEGIN CERTIFICATE---
e--- END CERTIFICATE ---
?Eu instalei o Xubuntu em um Raspberry pi 2, encontrei o mesmo problema com o tempo, pois a sincronização NTP e automática do servidor estava desativada (ou não instalada). Obter NTP
e altere "Hora e data" de "Manual" para "Manter sincronizado com os servidores da Internet"
fonte
Eventualmente, adicione o http.sslverify ao seu .git / config.
fonte
git config http.sslVerify false
. Você está sugerindo editar a configuração do Git por repositório, não globalmente como sugerido por @ romain-vdk?A primeira coisa que você deve procurar é a permissão de arquivo de
/etc/ssl
e/etc/ssl/certs
.Cometi o erro de remover permissões de arquivo (ou remover os
rm -rf /etc/ssl/*
diretórios SSL ) ao usar ossl-cert
nome / ID do grupo enquanto trabalhava na minha Ferramenta de Gerenciamento de Autoridade de Certificação .Foi então que percebi exatamente a mesma mensagem de erro para
wget
ecurl
ferramentas do navegador CLI:Depois que eu trouxe a permissão de arquivo dos diretórios
/etc/ssl
e , essas ferramentas do navegador CLI começaram a ficar um pouco mais fáceis:/etc/ssl/cert
o+rx-w
Também tive que recriar o subdiretório Java e reconstruir os diretórios de certificado da CA Confiável:
e a costa estava limpa.
fonte
Acabei de encontrar o mesmo problema com um repositório git que sempre funciona para mim. O problema era que eu o acessei por meio de acesso Wi-Fi público, que redireciona para um portal cativo na primeira conexão (por exemplo, para exibir anúncios e concordar com o TOS).
fonte
Copie o certificado e o pacote configurável em um arquivo .crt e verifique se há uma linha em branco entre os certificados no arquivo.
Isso funcionou para mim em um servidor GitLab depois de tentar tudo na Internet.
fonte