Como corrigir problemas de certificação CA com o Curl no Ubuntu 14.04?

13

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 eu entendo 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 adicionar cacert=/etc/ssl/certs/ca-certificates.crtao .curlrcarquivo (recém-criado) no meu diretório pessoal. Eu tentei ambos, e nenhum resolveu completamente o problema. curl está encontrando esse local, mas ainda não funciona, fornecendo 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 meu certificado CA com o $ sudo update-ca-certificates --fresh qual atualizei o certificado, mas ainda não fiz o erro 60 desaparecer.

Não tenho tanto conhecimento sobre certificados da CA e duvido que tenha adicionado propositalmente 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 descubro onde está esse certificado autoassinado e como removê-lo?

PS: Não quero usar o sinalizador -k (aka --inseguro). Eu quero fazer isso funcionar com segurança.

themaninthewoods
fonte

Respostas:

10

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

Isso fez o curl funcionar na linha de comando. Para fazer com que o curl funcione ainda mais no R (onde encontrei o problema pela primeira vez), eu também precisava ter cacert=/etc/ssl/certs/ca-certificates.crtno meu .curlrcarquivo como tentado antes, caso contrário, ele continuaria procurando por/etc/pki/tls/certs/ca-bundle.crt

Ainda não tenho idéia do motivo pelo qual vi o erro sobre certificados autoassinados.

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

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

no mesmo certsdiretório. Tendo cafileapontado para isso funcionou também. No final, eu coloco de volta ca-certificates.crte ainda funciona.

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

themaninthewoods
fonte
8

A chave cafile não funciona para mim (ondulação 7.45.0), mas o cacert (da opção --cacert) funciona. Meu arquivo .curlrc :

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
Duque
fonte
1
isso funcionou para mim no Ubuntu 16.04!
Joost Döbken
0

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

Isso foi resolvido baixando o arquivo ca-certificate.crt para /etc/ssl/certs/ca-certificates.crt e criando um link simbólico ca-bundle.crt no diretório / etc / pki / tls / certs / .

Espero que isto ajude!

Tâmil
fonte
0

Depois de pesquisar algumas vezes, consegui que funcionasse, e a resposta acabou sendo bastante simples. Faça passo a passo

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

Etapa 3 baixará o arquivo pem na pasta certs

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc é um arquivo oculto. verifique com ctrl + h no diretório inicial. se não houver, então no tipo de terminal

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

NB Aqui eu usei o editor nano, mas você pode usar qualquer editor.

PyDevSRS
fonte