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
Author: VonC, 2014-01-17

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
 286
Author: VonC, 2017-09-21 06:39:28

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.

 140
Author: Afzal Masood, 2017-03-07 17:50:52
Outra causa deste problema pode ser que o teu relógio esteja desligado. Os certificados são sensíveis ao tempo.

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
 107
Author: davidthings, 2017-01-06 01:49:20
Tinha o mesmo problema. Causada pela Autoridade de certificação auto-emitida. Resolvi-o adicionando .pem file to /usr / local / share/ca-certificates / e chamando
sudo update-ca-certificates

PS: Ficheiro pem na pasta ./share / ca-certificates MUST have extension .crt

 38
Author: Nikolay Ruban, 2014-06-30 14:23:36

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"
 32
Author: Romain VDK, 2017-10-09 12:33:58

Verifique o seu relógio do sistema,

$ date

Se não estiver correcto, a verificação do certificado falhará. Para corrigir o relógio do sistema,

$ apt-get install ntp

O relógio deve sincronizar-se.

Finalmente introduza o comando do clone novamente.

 24
Author: mycowan, 2017-09-20 11:53:03
GIT_CURL_VERBOSE=1 git [clone|fetch]…
Devia dizer - te onde está o problema. No meu caso, foi devido à curvatura não apoiar PEM de certificados quando construído contra NSS, devido a que o suporte não sendo mainline no NSS (#726116 #804215 #402712 e mais).
 20
Author: Tobu, 2014-04-15 15:12:08

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.

 11
Author: phiphu, 2016-08-30 10:51:34
Fiz asneira com os meus ficheiros do CA enquanto montava o goagent proxy. Não é possível obter dados do github, e obter o mesmo Aviso:
A verificação do certificado do Servidor

Foi 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'

 8
Author: IFQ, 2015-02-07 17:23:55

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

 7
Author: abcdef12, 2015-06-06 07:19:53

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"

 2
Author: user273711, 2015-03-24 19:03:52

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
 1
Author: Mickael L, 2016-03-14 16:12:46

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).

 0
Author: Tosha, 2014-07-26 16:50:55