Jak zaktualizować pakiet cURL CA na RedHat?

38

Mam problemy z tym, że pakiet CA, który został dołączony do mojej wersji cURL, jest nieaktualny.

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

Czytanie dokumentacji nie pomogło mi, ponieważ nie rozumiałem, co muszę zrobić ani jak to zrobić. Korzystam z RedHat i muszę zaktualizować pakiet CA. Co muszę zrobić, aby zaktualizować mój pakiet CA w RedHat?

Andrzej
źródło

Odpowiedzi:

50

W przypadku wersji RHEL 6 lub nowszej powinieneś używać update-ca-trust , jak opisuje lzap w swojej odpowiedzi poniżej.

--- W przypadku starszych wersji Fedory, CentOS, Redhat:

Curl korzysta z domyślnego systemu pakietu CA jest przechowywany w /etc/pki/tls/certs/ca-bundle.crt. Przed zmianą wykonaj kopię tego pliku, aby w razie potrzeby móc przywrócić system domyślny. Możesz po prostu dołączyć nowe certyfikaty CA do tego pliku lub zastąpić cały pakiet.

Zastanawiasz się także, skąd wziąć certyfikaty? Ja (i inni) polecam curl.haxx.se/ca. W jednej linii:

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

Lokalizacja Fedory Core 2 to /usr/share/ssl/certs/ca-bundle.crt.

Nada
źródło
To dobrze, ale skąd mogę mieć pewność, że dodany certyfikat nie zostanie utracony podczas następnej aktualizacji pliku ca-bundle.crt? Czy jest miejsce, w którym mogę umieścić nowy, w którym zostanie on automatycznie uwzględniony?
Andrew Schulman,
Od 2006 r. Aktualizacje openssl nie powinny zastępować pliku ca- bundle.crt (patrz rhn.redhat.com/errata/RHSA-2006-0661.html ). Jeśli jednak masz zainstalowany inny pakiet, na przykład pakiet ca-certyfikaty zalecany przez @mgorven, spodziewam się, że zostanie on ręcznie zastąpiony.
Nada
36

Zalecanym sposobem na to w systemach RHEL 6+ jest użycie narzędzia update-ca-trust , które jest teraz domyślnie instalowane.

# 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

Dlatego musisz tylko upuścić plik CRT do /etc/pki/ca-trust/source/anchors/i uruchomić narzędzie. Robota skończona. Jest to bezpieczne, nie trzeba wykonywać żadnych kopii zapasowych. Pełna strona podręcznika znajduje się tutaj: https://www.mankier.com/8/update-ca-trust

lzap
źródło
Cześć, czy to działa dla ciebie? Właśnie próbowałem wykonać scenariusz z access.redhat.com/solutions/1549003 i to nie działa dla mnie.
Kirby
6

RHEL zapewnia certyfikaty Mozilla CA jako część ca-certificatespakietu (zainstaluj to, yumjeśli nie jest jeszcze zainstalowane). Aby powiedzieć cURL, aby ich używał, użyj --cacertparametru w ten sposób.

curl --cacert /etc/ssl/certs/ca-bundle.crt https://google.com/
mgorven
źródło
Próbowałem yum install ca-certificatesi dostałemNo package ca-certificates available
Andrew
1
RHEL6 ma ten pakiet; zgaduję, że używasz starszej wersji. Niestety lista nie zmieniła się od 2010 roku, dzięki za utrzymywanie nas na bieżąco.
Dan Pritts
Używam RHEL7 na AWS EC2, właśnie zaktualizowałem swój pakiet do ca-certificates.noarch 0:2014.1.98-70.0.el7_0- niestety nie rozwiązało to mojego problemu, ale pomyślałem, że dodam tę informację.
DuffJ
6

Prawdopodobnie zależy, która wersja Redhat. Możesz sprawdzić, który pakiet faktycznie aktualizuje plik, wykonując:

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

Mój wynik pokazał, że openssl-0.9.8e-12.el5 wymaga aktualizacji.

Jeśli w twojej dystrybucji nie ma zaktualizowanych certyfikatów, musisz zaktualizować ręcznie, zgodnie z odpowiedzią Nady.

Pik Master
źródło
6

Od komentarza Dana Prittsa Red Hat częściej aktualizuje pakiety certyfikatów dla obsługiwanych wersji RHEL; widać to dość łatwo w dzienniku zmian pakietów. Certyfikaty RHEL 6 zostały zaktualizowane dwukrotnie w 2013 r. I dwukrotnie w 2014 r.

Wszystkie RHEL i pokrewne / klonowane / pochodne dystrybucje zapewniają plik pakietu w /etc/pki/tls/certs/ca-bundle.crti ten sam plik w /etc/pki/tls/cert.pem(w starszych dystrybucjach cert.pemjest dowiązaniem symbolicznym do ca-bundle.crt; w nowszych dystrybucjach oba są dowiązaniami symbolicznymi do pliku wyjściowego przez update-ca-trust).

W wersji RHEL 6 i nowszych pakiet jest częścią pakietu „ca-certyfikaty”. W wersji RHEL 5 i wcześniejszych jest on częścią pakietu „openssl”.

W RHEL 6 z aktualizacją https://rhn.redhat.com/errata/RHEA-2013-1596.html i każdym nowszym RHEL dostępny jest system „certyfikatów systemu współdzielonego” (należy go uruchomić, update-ca-trust enableaby go włączyć) i najlepszy metoda jest podana przez lzap. Zaletą tego systemu jest to, że działa on zarówno dla aplikacji opartych na NSS i GnuTLS, jak i opartych na OpenSSL. Pamiętaj, że możesz nie ufać certyfikatowi, umieszczając go w katalogu /etc/pki/ca-trust/source/blacklist/.

W RHEL 5 i starszych (i RHEL 6, jeśli nie chcesz korzystać z nowego systemu) możesz zaufać dodatkowym urzędom certyfikacji, umieszczając ich pliki certyfikatów w formacie PEM z rozszerzeniem.pem w / etc / pki / tls / certs i działając c_rehash(może również wymagać yum install /usr/bin/c_rehash). Działa to tylko w przypadku oprogramowania korzystającego z domyślnych magazynów zaufania OpenSSL. Jest to lepsze niż edytowanie lub zastępowanie pliku pakietu, ponieważ pozwala on nadal otrzymywać oficjalne aktualizacje pliku pakietu.

Oprogramowanie, które korzysta bezpośrednio z jednej z lokalizacji plików pakietu (zamiast prosić OpenSSL o użycie domyślnych systemowych magazynów zaufania), nie uwzględni zmiany. jeśli masz takie oprogramowanie, utknąłeś podczas edycji pliku pakietu (lub ulepszania oprogramowania). Oprogramowanie, które w ogóle nie korzysta z OpenSSL, nie będzie szanowało dodanego certyfikatu.

Adam Williamson
źródło
3

Musiałem to zrobić na starym pudełku RHEL5. Uderzyłem w haczyk 22 ... curl odrzuciłby pobieranie https, ponieważ certyfikaty na maszynie były zbyt stare, aby zweryfikować certyfikaty curl.haxx.se.

Użyłem opcji --insecure curl, aby wymusić pobieranie https. (Tak, wiem ... to jest „niepewne”).

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

Leonard
źródło
1

W przypadku RHEL 6 udało mi się to naprawić, aktualizując i ponownie instalując najnowszy pakiet certyfikatów CA firmy Red Hat:

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

(W moim przypadku wystarczyło to, aby zaufać nowemu certyfikatowi podpisującemu „Let's Encrypt Authority X3”).

Jeremy
źródło
Polecenie działało dla mnie (CentOS 6), ale nie rozwiązało mojego problemu (z certyfikatem wydanym przez „DigiCert SHA2 Secure Server CA”)
rinogo