Como corrigir problemas de certificado CA com Curl no Ubuntu 14.04?

Como corrigir problemas de certificado CA com Curl no Ubuntu 14.04?

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_BUNDLEno local apropriado ou adicioná-la cacert=/etc/ssl/certs/ca-certificates.crtao .curlrcarquivo (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 --freshos 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 .curlrcarquivo.

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.crtem meu .curlrcarquivo 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 certsdiretório. Ter cafileapontado isso também funcionou. No final coloquei de volta ca-certificates.crte 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 .curlrcmétodo não estava surtindo efeito.

Isso foi resolvido baixando o ca-certificates.crtto /etc/ssl/certs/ca-certificates.crte criando um link simbólico ca-bundle.crtno /etc/pki/tls/certs/diretório.

Espero que isto ajude!

informação relacionada