Wie aktualisiere ich das cURL CA-Bundle auf RedHat?

38

Ich habe Probleme, bei denen das mit meiner Version von cURL gelieferte CA-Bundle veraltet ist.

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

Das Lesen der Dokumentation half mir nicht, weil ich nicht verstand, was ich tun musste oder wie ich es tun sollte. Ich verwende RedHat und muss das CA-Bundle aktualisieren. Was muss ich tun, um mein CA-Bundle auf RedHat zu aktualisieren?

Andrew
quelle

Antworten:

50

Für RHEL 6 oder höher sollten Sie update-ca-trust verwenden , wie es lzap in seiner Antwort unten beschreibt.

--- Für ältere Versionen von Fedora, CentOS, Redhat:

Curl verwendet das vom System vorgegebene CA-Bundle, das in /etc/pki/tls/certs/ca-bundle.crt gespeichert ist. Erstellen Sie vor dem Ändern eine Kopie dieser Datei, damit Sie bei Bedarf die Systemstandardeinstellungen wiederherstellen können. Sie können einfach neue CA-Zertifikate an diese Datei anhängen oder das gesamte Bundle ersetzen.

Fragen Sie sich auch, wo Sie die Zertifikate bekommen? Ich (und andere) empfehle curl.haxx.se/ca. In einer Zeile:

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

Fedora Core 2 Speicherort ist /usr/share/ssl/certs/ca-bundle.crt.

Nada
quelle
Das ist gut, aber wie kann ich sicher sein, dass das Zertifikat, das ich hinzufüge, beim nächsten Update von ca-bundle.crt nicht verloren geht? Gibt es eine Stelle, an der ich die neue einfügen kann, an der sie automatisch eingefügt wird?
Andrew Schulman
Ab 2006 sollten openssl-Upgrades die Datei "ca-bundle.crt" nicht ersetzen (siehe rhn.redhat.com/errata/RHSA-2006-0661.html ). Wenn Sie jedoch ein anderes Paket installiert haben, wie das von @mgorven empfohlene Paket "ca-certificates", wird es vermutlich manuell überschrieben.
Nada
36

Die empfohlene Vorgehensweise auf RHEL 6+ Systemen ist die Verwendung des Update-CA-Trust- Tools, das jetzt standardmäßig installiert ist.

# 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

Aus diesem Grund müssen Sie nur Ihre CRT-Datei in das /etc/pki/ca-trust/source/anchors/und ablegen , um das Tool auszuführen. Arbeit erledigt. Dies ist sicher, Sie müssen keine Backups durchführen. Die vollständige Handbuchseite finden Sie hier: https://www.mankier.com/8/update-ca-trust

lzap
quelle
Hallo, funktioniert es bei dir? Ich habe nur versucht, das Szenario von access.redhat.com/solutions/1549003 zu verfolgen, und es funktioniert bei mir nicht.
Kirby
6

RHEL stellt die Mozilla CA-Zertifikate als Teil des ca-certificatesPakets zur Verfügung (installieren Sie dies mit, yumfalls es nicht bereits installiert ist). Um cURL anzuweisen, diese zu verwenden, verwenden Sie den --cacertParameter wie folgt.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
mgorven
quelle
Ich versuchte yum install ca-certificatesund bekamNo package ca-certificates available
Andrew
1
RHEL6 hat dieses Paket; Ich vermute, Sie verwenden eine ältere Version. Leider hat sich die Liste seit 2010 nicht geändert. Vielen Dank, dass Sie uns auf dem Laufenden gehalten haben.
Dan Pritts
Ich verwende RHEL7 auf AWS EC2. Ich habe gerade mein Paket auf aktualisiert. ca-certificates.noarch 0:2014.1.98-70.0.el7_0Es hat mein Problem leider nicht gelöst, aber ich dachte nur, ich würde diese Informationen hinzufügen.
DuffJ
6

Kommt wohl darauf an welche Version von Redhat. Sie können herausfinden, welches Paket die Datei tatsächlich aktualisiert, indem Sie folgende Schritte ausführen:

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

Mein Ergebnis zeigte, dass openssl-0.9.8e-12.el5 aktualisiert werden muss.

Wenn Ihre Distribution keine aktualisierten Zertifikate enthält, müssen Sie diese gemäß der Antwort von Nada manuell aktualisieren.

Pik Meister
quelle
6

Seit dem Kommentar von Dan Pritts hat Red Hat die Zertifikat-Bundles für unterstützte RHEL-Releases häufiger aktualisiert. Sie können dies ganz einfach im Paket changelog sehen. Die Zertifikate von RHEL 6 wurden 2013 zweimal und 2014 zweimal aktualisiert.

Alle RHEL- und verwandten / klon- / abgeleiteten Distributionen stellen eine Bundle-Datei unter /etc/pki/tls/certs/ca-bundle.crtund dieselbe unter zur Verfügung /etc/pki/tls/cert.pem(bei älteren Distributionen cert.pemist dies ein Symlink zu ca-bundle.crt; bei neueren Distributionen sind beide Symlinks zu einer Datei, die von ausgegeben wird update-ca-trust).

Ab RHEL 6 ist das Bundle Teil des Pakets 'ca-certificates'. In RHEL 5 und früheren Versionen ist es Teil des Pakets 'openssl'.

In RHEL 6 mit dem Update https://rhn.redhat.com/errata/RHEA-2013-1596.html und allen neueren RHEL-Versionen ist das System für gemeinsame Systemzertifikate verfügbar (Sie müssen es ausführen update-ca-trust enable, um es zu aktivieren) und das Beste Methode ist die von lzap gegebene. Ein Vorteil dieses Systems ist, dass es für NSS- und GnuTLS-basierte Anwendungen sowie für OpenSSL-basierte Anwendungen funktioniert. Beachten Sie, dass Sie einem Zertifikat auch misstrauen können, indem Sie es in das Verzeichnis stellen /etc/pki/ca-trust/source/blacklist/.

In RHEL 5 und älteren Versionen (und RHEL 6, wenn Sie das neue System nicht verwenden möchten) können Sie zusätzlichen Zertifizierungsstellen vertrauen, indem Sie ihre PEM-formatierten Zertifikatdateien mit der Erweiterung.pem in / etc / pki / tls / certs ablegen und ausführen c_rehash(möglicherweise auch erforderlich) yum install /usr/bin/c_rehash). Dies funktioniert nur für Software, die die Standard-Truststores von OpenSSL verwendet. Dies ist besser als das Bearbeiten oder Ersetzen der Bundle-Datei, da Sie weiterhin offizielle Updates für die Bundle-Datei erhalten können.

Software, die einen der Speicherorte der Bundle-Dateien direkt verwendet (anstatt OpenSSL aufzufordern, die Standard-Truststores des Systems zu verwenden), berücksichtigt die Änderung nicht. Wenn Sie eine solche Software haben, können Sie die Bundle-Datei nicht mehr bearbeiten (oder die Software verbessern). Software, die OpenSSL überhaupt nicht verwendet, respektiert das hinzugefügte Zertifikat nicht.

Adam Williamson
quelle
3

Ich musste das nur auf einer alten RHEL5-Box machen. Ich traf den Haken 22 ... curl lehnte den https-Download ab, da die Zertifikate auf dem Computer zu alt waren, um die curl.haxx.se-Zertifikate zu validieren.

Ich habe die Option --insecure von curl verwendet, um den https-Download zu erzwingen. (Ja, ich weiß ... es ist "unsicher".)

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

Leonard
quelle
1

Für RHEL 6 konnte ich dieses Problem beheben, indem ich das neueste CA certs-Paket von Red Hat aktualisierte und erneut installierte:

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

(In meinem Fall hat dies ausgereicht, damit das neuere Signaturzertifikat "Let's Encrypt Authority X3" als vertrauenswürdig eingestuft werden kann.)

Jeremy
quelle
Der Befehl hat bei mir funktioniert (CentOS 6), mein Problem wurde jedoch nicht behoben (mit einem von "DigiCert SHA2 Secure Server CA" ausgestellten Zertifikat)
rinogo