it-swarm.com.de

Wie aktualisiere ich das cURL CA-Bundle auf RedHat?

Ich habe Probleme, bei denen das mit meiner cURL-Version gebündelte 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 hat mir nicht geholfen, weil ich nicht verstanden habe, 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?

38
Andrew

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

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

Curl verwendet das Standard-CA-Bundle des Systems, das in /etc/pki/tls/certs/ca-bundle.crt gespeichert ist. Erstellen Sie vor dem Ändern eine Kopie dieser Datei, damit Sie bei Bedarf den Systemstandard 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 können? Ich (und andere) empfehlen 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-Standort ist /usr/share/ssl/certs/ca-bundle.crt.

49
Nada

Die empfohlene Methode auf RHEL 6+ -Systemen ist die Verwendung des Tools update-ca-trust , 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

Daher müssen Sie nur Ihre CRT-Datei in /etc/pki/ca-trust/source/anchors/ Ablegen und das Tool ausfü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

37
lzap

RHEL stellt die Mozilla CA-Zertifikate als Teil des ca-certificates package (installiere dies mit yum, falls es noch nicht installiert ist). Um cURL anzuweisen, diese zu verwenden, verwenden Sie --cacert Parameter wie so.

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

Kommt wohl darauf an welche Version von Redhat. Sie können herausfinden, welches Paket die Datei tatsächlich aktualisiert, indem Sie Folgendes tun:

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 sie gemäß Nadas Antwort manuell aktualisieren.

6
Pik Master

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

Alle RHEL- und verwandten/clone/abgeleiteten Distributionen bieten eine Bundle-Datei unter /etc/pki/tls/certs/ca-bundle.crt Und dieselbe Datei unter /etc/pki/tls/cert.pem (Bei älteren Distributionen cert.pem Ist ein Symlink zu ca-bundle.crt; in neueren Distributionen sind beide Symlinks zu einer Datei, die von update-ca-trust ausgegeben wird.

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

In RHEL 6 mit dem Update https://rhn.redhat.com/errata/RHEA-2013-1596.html und jedem neueren RHEL ist das System 'Shared System Certificates' verfügbar (Sie müssen es ausführen update-ca-trust enable, Um es zu aktivieren) und die beste Methode ist die von lzap. Ein Vorteil dieses Systems besteht darin, dass es sowohl für NSS- und GnuTLS-basierte als auch für OpenSSL-basierte Anwendungen funktioniert. Beachten Sie, dass Sie einem Zertifikat auch misstrauen können, indem Sie es in das Verzeichnis /etc/pki/ca-trust/source/blacklist/ Legen.

In RHEL 5 und älter (und RHEL 6, wenn Sie das neue System nicht verwenden möchten) können Sie zusätzlichen Zertifizierungsstellen vertrauen, indem Sie deren PEM-formatierte Zertifikatdateien mit der Erweiterung .pem Platzieren. in/etc/pki/tls/certs und Ausführen von c_rehash (benötigt möglicherweise auch 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-Datei direkt verwendet (anstatt OpenSSL zu bitten, die Standard-Vertrauensspeicher des Systems zu verwenden), berücksichtigt die Änderung nicht. Wenn Sie über eine solche Software verfügen, können Sie die Bundle-Datei nicht mehr bearbeiten (oder die Software verbessern). Software, die OpenSSL überhaupt nicht verwendet, berücksichtigt das hinzugefügte Zertifikat nicht.

6
Adam Williamson

Ich musste das nur auf einer alten RHEL5-Box machen. Ich habe den Haken 22 getroffen ... curl würde den https-Download ablehnen, 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

3
Leonard

Für RHEL 6 konnte ich dies beheben, indem ich das neueste CA-Zertifikatspaket von Red Hat aktualisierte und neu installierte:

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

(In meinem Fall war dies ausreichend, um das Vertrauen in das neuere Signaturzertifikat "Let's Encrypt Authority X3" zu ermöglichen.)

1
Jeremy