Posso enviar por projeto clone usando ssh, mas ele não funciona quando clono projeto com https.
A mensagem de erro que me mostra é:
server certificate verification failed. CAfile: /etc/ssl/certs/cacertificates.crt CRLfile: none
Posso enviar por projeto clone usando ssh, mas ele não funciona quando clono projeto com https.
A mensagem de erro que me mostra é:
server certificate verification failed. CAfile: /etc/ssl/certs/cacertificates.crt CRLfile: none
Respostas:
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
which git
.
curl-config --ca
, mas nada foi devolvido.
Nota: Isso tem grandes implicações de segurança.
Abra seu terminal e execute o seguinte comando:
export GIT_SSL_NO_VERIFY=1
Funciona para mim e estou usando o sistema Linux.
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:
date -R
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:
apt-get install ntp
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:
git config --global http.sslverify "false"
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
sudo update-ca-certificates
PS: arquivo pem na pasta ./share/ca-certificates DEVE ter extensão .crt
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.
GIT_CURL_VERBOSE=1 git [clone|fetch]…
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 ).
GIT_CURL_VERBOSE
. Eu não mencionei isso na minha resposta. 1
Ou simplesmente execute este comentário para adicionar o certificado do servidor ao seu banco 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 git clone novamente.
Eu errei com meus arquivos CA enquanto configurava o proxy goagent. Não é possível extrair dados do github e recebe o mesmo aviso:
falha na verificação do certificado do servidor. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
use o método Vonc, obtenha o certificado no github e coloque-o no /etc/ssl/certs/ca-certificates.crt, problema resolvido.
eco -n | openssl s_client -showcerts -connect github.com:443 2> / dev / null | sed -ne '/ -BEGIN CERTIFICATE - /, / - END CERTIFICATE- / p'
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
sudo gedit /etc/ssl/certs/ca-certificates.crt
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
O que fiz para resolver este problema no terminal (Ubuntu 18.04):
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
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
.
---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
sudo apt-get install ntp
e altere "Hora e data" de "Manual" para "Manter sincronizado com os servidores da Internet"
Eventualmente, adicione o http.sslverify ao seu .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
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 o ssl-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
e curl
ferramentas do navegador CLI:
server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
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
mkdir -p /etc/ssl/certs
chmod u+rwx,go+rx /etc/ssl /etc/ssl/certs
Também tive que recriar o subdiretório Java e reconstruir os diretórios de certificado da CA Confiável:
mkdir /etc/ssl/certs/java
chmod u+rwx,go+rx /etc/ssl/certs/java
update-ca-certificates
e a costa estava limpa.
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ão