Estou enfrentando problemas em que o pacote CA que foi empacotado com minha versão do cURL está desatualizado.
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
Ler a documentação não me ajudou porque não entendi o que precisava fazer ou como fazer. Estou executando o RedHat e preciso atualizar o pacote CA. O que preciso fazer para atualizar meu pacote CA no RedHat?
Para RHEL 6 ou posterior , você deve usar update-ca-trust , como lzap descreve em sua resposta abaixo.
--- Para versões mais antigas do Fedora, CentOS, Redhat:
O Curl está usando o pacote CA padrão do sistema armazenado em /etc/pki/tls/certs/ca-bundle.crt . Antes de alterá-lo, faça uma cópia desse arquivo para poder restaurar o padrão do sistema, se necessário. Você pode simplesmente anexar novos certificados de CA a esse arquivo ou substituir todo o pacote.
Você também está se perguntando onde obter os certificados? Eu (e outros) recomendo curl.se/ca . Em uma linha:
A localização do Fedora Core 2 é
/usr/share/ssl/certs/ca-bundle.crt
.A maneira recomendada de fazer isso em sistemas RHEL 6+ é usar a ferramenta update-ca-trust , que agora está instalada por padrão.
Portanto, você só precisa soltar seu arquivo crt no
/etc/pki/ca-trust/source/anchors/
e executar a ferramenta. Trabalho feito. Isso é seguro, você não precisa fazer nenhum backup. A página completa do manual pode ser encontrada aqui: https://www.mankier.com/8/update-ca-trustProvavelmente depende de qual versão do Redhat. Você pode descobrir qual pacote realmente atualiza o arquivo fazendo:
Meu resultado estava mostrando que openssl-0.9.8e-12.el5 precisa ser atualizado.
Se não houver certificados atualizados em sua distribuição, você deverá atualizar manualmente, conforme a resposta de Nada.
O RHEL fornece os certificados Mozilla CA como parte do
ca-certificates
pacote (instale-oyum
se ainda não estiver instalado). Para dizer ao cURL para usá-los, use o--cacert
parâmetro assim.Desde o comentário de Dan Pritts, a Red Hat vem atualizando com mais frequência os pacotes de certificados para as versões suportadas do RHEL; você pode ver isso facilmente no changelog do pacote. Os certificados do RHEL 6 foram atualizados duas vezes em 2013 e duas vezes em 2014.
Todas as distribuições RHEL e relacionadas / clone / derivadas fornecem um arquivo de pacote em
/etc/pki/tls/certs/ca-bundle.crt
, e o mesmo arquivo em/etc/pki/tls/cert.pem
(em distribuições mais antigascert.pem
é um link simbólico paraca-bundle.crt
; em distribuições mais recentes, ambos são links simbólicos para um arquivo de saída porupdate-ca-trust
).No RHEL 6 e mais recente, o pacote faz parte do pacote 'ca-certificates'. No RHEL 5 e anteriores, faz parte do pacote 'openssl'.
No RHEL 6 com a atualização https://rhn.redhat.com/errata/RHEA-2013-1596.html e qualquer RHEL mais recente, o sistema de 'certificados de sistema compartilhado' está disponível (você deve executar
update-ca-trust enable
para habilitá-lo) e o melhor método é aquele dado por lzap. Um benefício desse sistema é que ele funciona para aplicativos baseados em NSS e GnuTLS, bem como em aplicativos baseados em OpenSSL. Observe que você também pode desconfiar de um certificado colocando-o no diretório/etc/pki/ca-trust/source/blacklist/
.No RHEL 5 e anterior (e no RHEL 6 se você não deseja usar o novo sistema) você pode confiar em CAs extras colocando seus arquivos de certificado formatados em PEM com a extensão
.pem
em /etc/pki/tls/certs e executandoc_rehash
(também pode ser necessárioyum install /usr/bin/c_rehash
). Isso só funcionará para software que usa os armazenamentos confiáveis padrão do OpenSSL. Isso é melhor do que editar ou substituir o arquivo do pacote porque permite que você continue recebendo atualizações oficiais do arquivo do pacote.O software que usa um dos locais de arquivo do pacote diretamente (em vez de pedir ao OpenSSL para usar os armazenamentos confiáveis padrão do sistema) não respeitará a alteração; se você tiver esse software, ficará preso editando o arquivo do pacote (ou aprimorando o software). O software que não usa OpenSSL não respeitará o certificado adicionado.
Eu só tive que fazer isso em uma caixa RHEL5 antiga. Eu bati no catch 22... curl rejeitaria o download https porque os certificados na máquina eram muito antigos para validar os certificados curl.haxx.se.
Eu usei a opção --insecure do curl para forçar o download https. (Sim, eu sei... é "inseguro".)
Para o RHEL 6 , consegui corrigir isso atualizando e reinstalando o pacote de certificados CA mais recente da Red Hat:
(No meu caso, isso foi suficiente para permitir que o certificado de assinatura "Let's Encrypt Authority X3" mais recente fosse confiável.)