web-dev-qa-db-fra.com

Comment mettre à jour le bundle cURL CA sur RedHat?

Je rencontre des problèmes où le bundle CA fourni avec ma version de cURL est obsolète.

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

La lecture de la documentation ne m'a pas aidé car je ne comprenais pas ce que je devais faire ou comment le faire. J'utilise RedHat et j'ai besoin de mettre à jour le bundle CA. Que dois-je faire pour mettre à jour mon bundle CA sur RedHat?

38
Andrew

Pour RHEL 6 ou version ultérieure, vous devez utiliser pdate-ca-trust, comme lzap le décrit dans sa réponse ci-dessous.

--- Pour les anciennes versions de Fedora, CentOS, Redhat:

Curl utilise le bundle CA par défaut du système est stocké dans /etc/pki/tls/certs/ca-bundle.crt. Avant de le modifier, faites une copie de ce fichier afin de pouvoir restaurer les paramètres système par défaut si nécessaire. Vous pouvez simplement ajouter de nouveaux certificats d'autorité de certification à ce fichier ou remplacer l'ensemble complet.

Vous vous demandez également où obtenir les certificats? Je (et d'autres) recommande curl.haxx.se/ca. En une seule ligne:

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

L'emplacement de Fedora Core 2 est /usr/share/ssl/certs/ca-bundle.crt.

49
Nada

La façon recommandée de le faire sur les systèmes RHEL 6+ est d'utiliser l'outil update-ca-trust , qui est maintenant installé par défaut.

# 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

Par conséquent, il vous suffit de déposer votre fichier crt dans le /etc/pki/ca-trust/source/anchors/ et pour exécuter l'outil. Travail effectué. C'est sûr à faire, vous n'avez pas besoin de faire de sauvegardes. La page de manuel complète peut être trouvée ici: https://www.mankier.com/8/update-ca-trust

37
lzap

RHEL fournit les certificats d'autorité de certification Mozilla dans le cadre du ca-certificates package (installez-le avec yum s'il n'est pas déjà installé). Pour dire à cURL de les utiliser, utilisez le --cacert paramètre comme ça.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
6
mgorven

Cela dépend probablement de la version de Redhat. Vous pouvez trouver le package qui met réellement à jour le fichier en procédant comme suit:

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

Mon résultat montrait que openssl-0.9.8e-12.el5 doit être mis à jour.

S'il n'y a pas de certificats mis à jour dans votre distribution, vous devez mettre à jour manuellement, selon la réponse de Nada.

6
Pik Master

Depuis le commentaire de Dan Pritts, Red Hat a mis à jour les paquets de certificats pour les versions RHEL prises en charge plus souvent; vous pouvez le voir assez facilement dans le changelog du paquet. Les certificats RHEL 6 ont été mis à jour deux fois en 2013 et deux fois en 2014.

Toutes les distributions RHEL et connexes/clones/dérivés fournissent un fichier de regroupement à /etc/pki/tls/certs/ca-bundle.crt, et le même fichier à /etc/pki/tls/cert.pem (sur les anciennes distributions cert.pem est un lien symbolique vers ca-bundle.crt; sur les distributions plus récentes, les deux sont des liens symboliques vers une sortie de fichier par update-ca-trust).

Dans RHEL 6 et les versions ultérieures, le bundle fait partie du package "ca-certificats". Dans RHEL 5 et versions antérieures, il fait partie du package "openssl".

Dans RHEL 6 avec la mise à jour https://rhn.redhat.com/errata/RHEA-2013-1596.html et tout RHEL plus récent, le système des certificats de système partagé est disponible (vous devez exécuter update-ca-trust enable pour l'activer) et la meilleure méthode est celle donnée par lzap. Un avantage de ce système est qu'il fonctionne pour les applications basées sur NSS et GnuTLS ainsi que celles basées sur OpenSSL. Notez que vous pouvez également vous méfier d'un certificat en le plaçant dans le répertoire /etc/pki/ca-trust/source/blacklist/.

Dans RHEL 5 et versions antérieures (et RHEL 6 si vous ne souhaitez pas utiliser le nouveau système), vous pouvez faire confiance à des autorités de certification supplémentaires en plaçant leurs fichiers de certificat au format PEM avec l'extension .pem dans/etc/pki/tls/certs et exécutant c_rehash (peut également nécessiter yum install /usr/bin/c_rehash). Cela ne fonctionnera que pour les logiciels qui utilisent les magasins de confiance par défaut d'OpenSSL. C'est mieux que de modifier ou de remplacer le fichier de bundle car cela vous permet de continuer à recevoir les mises à jour officielles du fichier de bundle.

Les logiciels qui utilisent directement l'un des emplacements de fichiers de bundle (plutôt que de demander à OpenSSL d'utiliser les magasins d'approbation par défaut du système) ne respecteront pas le changement; si vous disposez d'un tel logiciel, vous êtes bloqué pour éditer le fichier de l'ensemble (ou pour améliorer le logiciel). Les logiciels qui n'utilisent pas du tout OpenSSL ne respecteront pas le certificat ajouté.

6
Adam Williamson

Je devais juste le faire sur une vieille boîte RHEL5. J'ai frappé le crochet 22 ... curl rejetterait le téléchargement https parce que les certificats sur la machine étaient trop vieux pour valider les certificats curl.haxx.se.

J'ai utilisé l'option --insecure de curl pour forcer le téléchargement https. (Ouais, je sais ... c'est "peu sûr".)

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

3
Leonard

Pour RHEL 6, j'ai pu résoudre ce problème en mettant à jour et en réinstallant le dernier package de certificats CA de Red Hat:

Sudo yum update ca-certificates
Sudo yum reinstall ca-certificates

(Dans mon cas, cela suffisait pour permettre la confiance au nouveau certificat de signature "Let’s Encrypt Authority X3".)

1
Jeremy