
Estou usando o Ubuntu 14.04. Quando uso curl, recebo o seguinte erro:
curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:
Pelo que descobri pesquisando no Google, o local do CAfile que ele está procurando não é correto para o Ubuntu (e não existe no meu computador), /etc/ssl/certs/ca-certificates.crt
é o local adequado.
A maioria das soluções envolvia definir a variável de ambiente CURL_CA_BUNDLE
no local apropriado ou adicioná-la cacert=/etc/ssl/certs/ca-certificates.crt
ao .curlrc
arquivo (recém-criado) em meu diretório inicial. Eu tentei os dois e nenhum deles resolveu completamente o problema. curl está encontrando esse local, mas ainda não funciona, dando o erro:
curl: (60) SSL certificate problem: self signed certificate in certificate chain
Também tentei desinstalar e reinstalar o curl no Ubuntu e atualizar meus certificados de CA com $ sudo update-ca-certificates --fresh
os quais atualizei os certificados, mas ainda não fiz com que o erro 60 desaparecesse.
Não tenho muito conhecimento sobre certificados de CA e duvido que tenha adicionado propositalmente algum certificado autoassinado no passado. Talvez por acidente, não sei.
Alguém sabe como consertar isso? Existe uma maneira de realmente começar do zero com todos os meus certificados? Ou alguém sabe como faço para descobrir onde está esse certificado autoassinado e como removê-lo?
PS: Não quero usar o sinalizador -k (também conhecido como --insecure). Quero que isso funcione com segurança.
Responder1
Depois de pesquisar e trabalhar nisso nos últimos dias, consegui que funcionasse e a resposta acabou sendo bastante simples.
Eu precisava definir capath=/etc/ssl/certs/
no meu .curlrc
arquivo.
Isso fez o curl funcionar na linha de comando. Para fazer o curl funcionar ainda mais em R (onde encontrei o problema pela primeira vez), eu também precisava ter cacert=/etc/ssl/certs/ca-certificates.crt
em meu .curlrc
arquivo como tentei antes, caso contrário, ele continuou procurando/etc/pki/tls/certs/ca-bundle.crt
Ainda não tenho ideia de por que estava vendo o erro sobre certificados autoassinados.
Com base em algumas outras descobertas aleatórias, também baixei um certificado do site Curl com:
sudo wget https://curl.se/ca/cacert.pem
no mesmo certs
diretório. Ter cafile
apontado isso também funcionou. No final coloquei de volta ca-certificates.crt
e ainda funciona.
Não entendo exatamente por que isso funcionou ou o que está acontecendo, mas está resolvido.
Responder2
cafékey não funciona para mim (curl 7.45.0), mas cacert (da opção --cacert) funciona. Meu.curlrcarquivo:
capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
Responder3
Depois de pesquisar algumas vezes, consegui que funcionasse e a resposta acabou sendo bastante simples.
Abra o terminal ctrl+ alt+ te altere o diretório de trabalho:
cd /etc/ssl/certs/
Baixe o arquivo pem nocertificadospasta
sudo wget https://curl.se/ca/cacert.pem
Agora abra o arquivo.curlrc
nano ~/.curlrc
Adicione as linhas abaixo no arquivo aberto
capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
Agora salve o arquivo e faça suas coisas usando o comando curl.
ObservaçãoAqui usei o editor nano, mas você pode usar qualquer editor.
Responder4
Enfrentamos o mesmo problema com um de nossos programas C++ no Ubuntu 14.04.5. O .curlrc
método não estava surtindo efeito.
Isso foi resolvido baixando o ca-certificates.crt
to /etc/ssl/certs/ca-certificates.crt
e criando um link simbólico ca-bundle.crt
no /etc/pki/tls/certs/
diretório.
Espero que isto ajude!