Recentemente, atualizei nosso servidor de 8.04 para 10.04 e todo o software que o acompanha.
Pelo que encontrei on-line, parece que a nova versão do CURL não inclui um pacote CA e, como resultado, falha ao verificar se o certificado do servidor ao qual você está se conectando é assinado por uma autoridade válida .
O erro real é:
Erro CURL: problema no certificado SSL, verifique se o certificado da CA está OK. Detalhes: erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE: falha na verificação do certificado
Algumas partes que encontrei sugerem a especificação manual de um arquivo CA ou a desativação da verificação, definindo uma opção quando você chama CURL, mas eu prefiro corrigir o problema globalmente, em vez de precisar modificar as chamadas CURL de cada aplicativo.
Existe uma maneira de corrigir o problema da CA do CURL em todo o servidor, para que todo o código de aplicativo existente funcione como está sem precisar ser modificado?
Tive um problema semelhante com o Ubuntu 12.04 executando curl na linha de comando para obter as ferramentas de linha de comando aws que estavam no github. Eu descobri se eu executava a linha de comando como tal:
funcionaria. Mas tentar definir a variável de ambiente CURL_CA_BUNDLE para evitar o argumento "cacert" não funcionaria. Por fim, a atualização dos certificados ca pareceu resolver o problema:
Como uma observação lateral, a certa altura atualizei os certificados do curl.haxx.se que não resolveram o problema, mas podem ter sido relacionados. (
sudo wget http://curl.haxx.se/ca/cacert.pem
fugir de/etc/ssl/certs
).fonte
Normalmente, o software que não possui uma implementação exclusiva e é compilado no OpenSSL fará referência ao ca-bundle.crt em todo o sistema, geralmente localizado em
/usr/share/ssl/certs
.O local pode ser diferente no Ubuntu, mas o pacote OpenSSL deve incluir o arquivo ca-bundle.
O CURL tem uma variedade de opções para especificar como verifica os certificados.
CURL_CA_BUNDLE
variável de ambiente para o local do arquivo ca-bundle.--capath
permite especificar o diretório em que os certificados da CA estão localizados. (SubstituiCURL_CA_BUNDLE
)--cacert
permite especificar o arquivo de certificado da CA.No meu servidor CentOS, posso executar o seguinte para identificar o caminho do pacote CA usado pelo CURL:
fonte
libcurl3-openssl-dev
pacote com base em uma pesquisa rápida na Internet.CURL_CA_BUNDLE
é apenas uma variável de ambiente. Na festançaCURL_CA_BUNDLE=/path/to/file
,.