a verificação do certificado do servidor foi mal-sucedida. CAfile: / etc / ssl/certs / ca-certificates.CRT CRLfile: nenhum
eu posso empurrar por projecto de clones usando o ssh, mas não funciona quando eu clono o projecto com o https. ele mostra erro de mensagem como abaixo.
server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
13 answers
TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
Resposta longa
A razão básica é que o teu computador não confia na autoridade do certificado que assinou o certificado usado no servidor gitlab . Isto não significa que o certificado seja suspeito, mas pode ser autossignado ou assinado por uma instituição/empresa que não está na lista de CAs do seu SO. O que você tem que fazer para contornar o problema no seu computador é dizer-lhe para confiar no certificado, se não tiver motivos para suspeitar.
Você precisa verificar o certificado 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 referido certificado, pode definir:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Mas isso seria apenas para testes, como ilustrado em" SSL trabalha com browser, wget, e curl, mas falha com git ", ou neste blog post .
Verifique a sua configuração do GitLab, a em edição 4272 .
Para obter esse certificado (que teria de adicionar ao seu ficheiro curl-ca-bundle.crt
), escreva a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(com 'yourserver.com
' sendo o seu nome do servidor GitLab)
Para verificar a AC (entidade emissora do certificado), tipo a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Findekano adiciona nos comentários:
Para identificar a localização de
curl-ca-bundle.crt
, pode usar o comando
curl-config --ca
Veja também a minha resposta mais recente " github: a verificação do certificado do servidor foi mal-sucedida ": poderá ter de actualizar todos os 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
Nota: {[5] } isto tem implicações importantes na segurança.
Abra o seu terminal e execute o seguinte comando:
export GIT_SSL_NO_VERIFY=1
Funciona para mim e estou a usar o sistema Linux.
Para verificar a hora actual do sistema:
date -R
Pode considerar instalarNTP para sincronizar automaticamente o tempo do sistema com os servidores de tempo de internet de confiança doglobal NTP pool . Por exemplo, para instalar no Debian/Ubuntu:
apt-get install ntp
sudo update-ca-certificates
PS: Ficheiro pem na pasta ./share / ca-certificates MUST have extension .crt
Se estiver a usar um servidor git dentro de uma rede privada e estiver a usar um certificado autossignado ou um certificado sobre um endereço IP ; Poderá também simplesmente usar a configuração global do git para desactivar as verificações ssl:
git config --global http.sslverify "false"
Verifique o seu relógio do sistema,
$ date
$ apt-get install ntp
Finalmente introduza o comando do clone novamente.
Ou simplesmente executar este comentário para adicionar o certificado do servidor à sua base de dados:
echo $(echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p') >> /etc/ssl/certs/ca-certificates.crt
Então faz o git clone outra vez.
A verificação do certificado do ServidorFoi mal-sucedida. CAfile: / etc / ssl/certs / ca-certificates.CRT CRLfile: none
Usar o método do Vonc, obter o certificado do github e colocá-lo em /etc/ssl/certs/ca-certificates.crt, problema resolvido.
Echo-n | openssl s_client-showcerts-connect github. com: 443 2> / dev / null / sed-ne ' / - BEGIN CERTIFICATE -/,/-END CERTIFICATE - /p'
Não há necessidade de definir a verificação do Git ssl como falsa. É causada quando o sistema não tem todos os certificados da Autoridade AC. A maioria das pessoas que têm um certificado SSL genuíno sem o certificado intermédio.
Apenas adicionando o texto completo do certificado intermédio (toda a cadeia de AC e certificado intermédio em falta) a
sudo gedit /etc/ssl/certs/ca-certificates.crt
Funciona sem executar o update-ca-certificates
.
O mesmo vale para os certificados gerados manualmente, basta adicionar a AC texto do certificado.
No final: empurrar com sucesso: tudo está actualizado
Instalei o Xubuntu num Raspberry pi 2, tendo encontrado o mesmo problema com o tempo, dado que o NTP e a sincronização automática do servidor estavam desligadas (ou não estavam instaladas) . Obter NTP
sudo apt-get install ntp
E mudar a " hora e data "de" Manual "para"manter sincronizado com servidores de Internet"
Eventualmente, adicione o http.sslverify para ti .git / config.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://server/user/project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[http]
sslVerify = false
Acabei de encontrar o mesmo problema com um repositório git que funciona sempre para mim. O problema era que eu acessei-o através de acesso Wi-Fi público, que redireciona para um portal cativo sobre a primeira conexão (por exemplo, para mostrar anúncios e concordar com os OT).