Como atualizar o pacote cURL CA no RedHat?

38

Estou com problemas nos quais o pacote 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 precisava fazer ou como fazê-lo. Estou executando o RedHat e preciso atualizar o pacote CA. O que preciso fazer para atualizar meu pacote CA no RedHat?

Andrew
fonte

Respostas:

50

Para o RHEL 6 ou posterior , você deve usar o 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 configurável de 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 pode substituir o pacote inteiro.

Você também está se perguntando onde obter os certificados? Eu (e outros) recomendo o 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.

Nada
fonte
Isso é bom, mas como posso ter certeza de que o certificado adicionado não será perdido na próxima atualização do ca-bundle.crt? Existe um lugar onde eu possa colocar o novo onde ele será incluído automaticamente?
Andrew Schulman
A partir de 2006, as atualizações do openssl não deveriam substituir o arquivo ca-bundle.crt (consulte rhn.redhat.com/errata/RHSA-2006-0661.html ). No entanto, se você tiver outro pacote instalado, como o pacote ca-certificates recomendado pelo @mgorven, espero que seja substituído manualmente.
Nada
36

A maneira recomendada de fazer isso nos sistemas RHEL 6+ é usar a ferramenta update-ca-trust , que agora está 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 na /etc/pki/ca-trust/source/anchors/e executar a ferramenta. Trabalho feito. Isso é seguro, você não precisa fazer backups. A página do manual completo pode ser encontrada aqui: https://www.mankier.com/8/update-ca-trust

lzap
fonte
Oi, isso funciona para você? Eu apenas tentei seguir o cenário em access.redhat.com/solutions/1549003 e não funciona para mim.
Kirby #
6

O RHEL fornece os certificados de CA da Mozilla como parte do ca-certificatespacote (instale-o yumse ainda não estiver instalado). Para dizer ao cURL para usá-los, use o --cacertparâmetro assim.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
mgorven
fonte
Tentei yum install ca-certificatese conseguiNo package ca-certificates available
Andrew
1
O RHEL6 possui este pacote; Eu estou supondo que você está usando uma versão mais antiga. Infelizmente, a lista não mudou desde 2010, obrigado por nos manter atualizados.
Dan Pritts
Estou usando o RHEL7 no AWS EC2, acabei de atualizar meu pacote para ca-certificates.noarch 0:2014.1.98-70.0.el7_0- infelizmente não resolvi meu problema, mas pensei em adicionar essas informações.
9119 DuffJ
6

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

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

Meu resultado foi mostrar que o 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.

Pik Master
fonte
6

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

Todas as distros RHEL e relacionadas / clone / derivadas fornecem um arquivo de pacote em /etc/pki/tls/certs/ca-bundle.crte o mesmo arquivo em /etc/pki/tls/cert.pem(em distros mais antigas cert.pemé um link simbólico ca-bundle.crt; em distros mais recentes, ambos são links simbólicos para uma saída de arquivo 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 a atualização https://rhn.redhat.com/errata/RHEA-2013-1596.html e em qualquer RHEL mais recente, o sistema 'certificados do sistema compartilhado' está disponível (você deve executar update-ca-trust enablepara habilitá-lo) e o melhor O método é o dado pelo lzap. Um benefício desse sistema é que ele funciona para aplicativos baseados em NSS e GnuTLS e também em aplicativos baseados em OpenSSL. Note que você também pode desconfiar um certificado, colocando-o no diretório /etc/pki/ca-trust/source/blacklist/.

No RHEL 5 e mais antigo (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 em execução c_rehash(também pode ser necessário yum install /usr/bin/c_rehash) Isso funcionará apenas para softwares que usam armazenamentos confiáveis ​​padrão do OpenSSL. É melhor do que editar ou substituir o arquivo do pacote configurável, pois permite que você continue recebendo atualizações oficiais no arquivo do pacote configurável.

O software que usa diretamente um dos locais de arquivo do pacote configurável (em vez de solicitar ao OpenSSL para usar os armazenamentos confiáveis ​​padrão do sistema) não respeitará a alteração; se você possui esse software, está impedido de editar o arquivo do pacote (ou melhorar o software). O software que não usa o OpenSSL não respeitará o certificado adicionado.

Adam Williamson
fonte
3

Eu só tinha que fazer isso em uma caixa antiga RHEL5. Eu bati no catch 22 ... o curl rejeitaria o download https porque os certificados na máquina eram muito antigos para validar os certificados curl.haxx.se.

Usei a opção --insecure do curl para forçar o download do https. (Sim, eu sei ... é "inseguro".)

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

Leonard
fonte
1

Para o RHEL 6 , consegui corrigir isso atualizando e reinstalando o pacote CA certs mais recente da Red Hat:

sudo yum update ca-certificates
sudo yum reinstall ca-certificates

(No meu caso, isso foi suficiente para permitir a confiabilidade do certificado de assinatura "Let's Encrypt Authority X3" mais recente).

Jeremy
fonte
O comando funcionou para mim (CentOS 6), mas não resolveu o meu problema (com um certificado emitido pelo "DigiCert SHA2 Secure Server CA")
rinogo 02/04