Como atualizar o pacote cURL CA no RedHat?

34

Estou com problemas em que o pacote da CA que foi incluído na 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 eu não entendi o que eu precisava fazer ou como fazer. Estou executando o RedHat e preciso atualizar o pacote do CA. O que preciso fazer para atualizar meu pacote da CA no RedHat?

    
por Andrew 01.06.2012 / 19:45

6 respostas

46

Para o RHEL 6 ou posterior , você deve usar update-ca-trust , como descreve o lzap em sua resposta abaixo.

--- Para versões mais antigas do Fedora, CentOS, Redhat:

Curl está usando o bundle 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 que você possa restaurar o padrão do sistema, se necessário. Você pode simplesmente acrescentar 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.haxx.se/ca. Em uma linha:

curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

A localização do Fedora Core 2 é /usr/share/ssl/certs/ca-bundle.crt .

    
por 01.06.2012 / 21:14
32

A maneira recomendada de fazer isso nos sistemas RHEL 6+ é usar a ferramenta update-ca-trust , que agora é instalada por padrão.

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information
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. Página de manual completa pode ser encontrada aqui: link

    
por 07.10.2014 / 13:38
6

O RHEL fornece os certificados de CA do Mozilla como parte do pacote ca-certificates (instale isso com yum , se ainda não estiver instalado). Para dizer ao cURL para usá-los, use o parâmetro --cacert da maneira que você deseja.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
    
por 01.06.2012 / 20:28
6

Provavelmente depende de qual versão do Redhat. Você pode descobrir qual pacote realmente atualiza o arquivo fazendo:

rpm -qf /etc/pki/tls/certs/ca-bundle.crt

Meu resultado mostrou que o openssl-0.9.8e-12.el5 precisa ser atualizado.

Se não houver certificados atualizados em sua distribuição, você precisará atualizar manualmente, de acordo com a resposta de Nada.

    
por 19.10.2012 / 12:58
5

Desde o comentário de Dan Pritts, a Red Hat atualizou os pacotes de certificados para as versões suportadas do RHEL com mais frequência; você pode ver isso facilmente no changelog do pacote. Os certificados do RHEL 6 foram atualizados duas vezes em 2013 e duas em 2014.

Todas as distribuições RHEL e relacionadas / clone / derivadas fornecem um arquivo bundle em /etc/pki/tls/certs/ca-bundle.crt , e o mesmo arquivo em /etc/pki/tls/cert.pem (em distribuições antigas cert.pem é um link simbólico para ca-bundle.crt ; em distros mais novas, ambos são links simbólicos para um arquivo de saída por update-ca-trust ).

No RHEL 6 e mais recente, o pacote faz parte do pacote 'ca-certificates'. No RHEL 5 e versões anteriores, faz parte do pacote 'openssl'.

No RHEL 6 com o link atualizado e com qualquer RHEL mais recente, os 'certificados de sistema compartilhados 'o sistema está disponível (você deve executar update-ca-trust enable para habilitá-lo) e o melhor método é o dado pelo lzap. Um benefício deste sistema é que ele funciona para aplicativos baseados em NSS e GnuTLS, bem como em aplicativos baseados em OpenSSL. Note 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 RHEL 6 se você não deseja usar o novo sistema), você pode confiar em CAs extras colocando seus arquivos de certificado formatados pelo PEM com a extensão .pem em / etc / pki / tls / certs e executando c_rehash (também pode precisar de yum install /usr/bin/c_rehash ). Isso funcionará apenas para software que usa os armazenamentos de confiança padrão do OpenSSL. Isso é melhor do que editar ou substituir o arquivo do pacote, pois ele permite que você continue recebendo atualizações oficiais no arquivo do pacote.

O software que usa um dos locais de arquivo de pacote diretamente (em vez de pedir ao OpenSSL para usar os armazenamentos de confiança padrão do sistema) não respeitará a alteração; se você tiver esse software, você está preso editando o arquivo do pacote (ou melhorando o software). O software que não usa o OpenSSL não respeitará o certificado adicionado.

    
por 14.01.2015 / 23:11
2

Eu só tive que fazer isso em uma caixa antiga do RHEL5. Eu acertei a captura 22 ... a 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 de curl para forçar o download de https. (Sim, eu sei ... é "inseguro".)

curl https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt

    
por 25.08.2016 / 19:15