Como corrigir problemas do certificado CA com o Curl no Ubuntu 14.04?

11

Estou usando o Ubuntu 14.04. Quando uso o curl, recebo o seguinte erro:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

Pelo que descobri no googling, o local do arquivo CA pesquisado não está 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 a configuração da variável de ambiente CURL_CA_BUNDLE para o local adequado ou a adição de cacert=/etc/ssl/certs/ca-certificates.crt ao arquivo (recém-criado) .curlrc em meu diretório inicial. Eu tentei ambos, e nem completamente resolver o problema. O curl está encontrando esse local, mas ainda não funciona, dando o erro:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

Eu também tentei desinstalar e reinstalar o curl no Ubuntu e atualizar meus certificados da CA com $ sudo update-ca-certificates --fresh , que atualizou os certs, mas ainda assim, o erro 60 não desapareceu.

Eu não tenho esse conhecimento sobre os certificados da CA e duvido que, de propósito, eu tenha adicionado algum certificado autoassinado no passado. Talvez por acidente, eu não sei.

Alguém sabe como consertar isso? Existe uma maneira de realmente começar de novo com todos os meus certificados? Ou alguém sabe como eu vou descobrir onde este certificado auto-assinado é, e depois como removê-lo?

PS: Eu não quero usar o sinalizador -k (aka --insecure). Eu quero que isso funcione de forma segura.

    
por themaninthewoods 10.07.2015 / 00:37

3 respostas

8

Depois de pesquisar e trabalhar nisso nos últimos dois dias, consegui que funcionasse, e a resposta acabou sendo bastante simples.

Eu precisava definir capath=/etc/ssl/certs/ no meu arquivo .curlrc .

Isso fez com que a onda funcionasse na linha de comando. Para obter ainda mais o curl para trabalhar em R (onde encontrei o problema pela primeira vez), também precisei ter cacert=/etc/ssl/certs/ca-certificates.crt no meu arquivo .curlrc , conforme tentado anteriormente, caso contrário, ele continuava procurando por /etc/pki/tls/certs/ca-bundle.crt

Ainda não tenho ideia do motivo pelo qual vi o erro sobre certificados auto-assinados.

Com base em algumas outras descobertas aleatórias, também baixei um certificado do site da Curl com:

sudo wget http://curl.haxx.se/ca/cacert.pem

no mesmo diretório certs . Ter cafile apontado para isso funcionou também. No final, coloco de volta para ca-certificates.crt e ainda funciona.

Eu não entendo exatamente por que isso funcionou ou o que está acontecendo, mas está resolvido.

    
por themaninthewoods 11.07.2015 / 07:22
6
A chave

cafile não funciona para mim (curl 7.45.0), mas o cacert (da opção --cacert) faz isso. Meu arquivo .curlrc :

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
    
por Duke 30.03.2016 / 18:42
0

Enfrentamos o mesmo problema com um de nossos programas C ++ no Ubuntu 14.04.5. O método .curlrc não estava em vigor.

Isso foi resolvido com o download do ca-certificates.crt para /etc/ssl/certs/ca-certificates.crt e criando um link simbólico ca-bundle.crt em / etc / pki / tls / certs / diretório.

Espero que isso ajude!

    
por Tamil 21.07.2017 / 17:47