Come aggiornare il bundle CA cURL su RedHat?


38

Sto riscontrando problemi in cui il bundle CA che è stato in bundle con la mia versione di cURL è obsoleto.

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

Leggere la documentazione non mi ha aiutato perché non capivo cosa dovevo fare o come farlo. Sto eseguendo RedHat e devo aggiornare il bundle CA. Cosa devo fare per aggiornare il mio pacchetto CA su RedHat?

Risposte:


50

Per RHEL 6 o versioni successive , dovresti utilizzare update-ca-trust , come descritto da lzap nella sua risposta di seguito.

--- Per le versioni precedenti di Fedora, CentOS, Redhat:

Curl utilizza il bundle CA predefinito di sistema è archiviato in /etc/pki/tls/certs/ca-bundle.crt. Prima di modificarlo, crea una copia di quel file in modo da poter ripristinare le impostazioni predefinite del sistema se necessario. È possibile semplicemente aggiungere nuovi certificati CA a quel file oppure sostituire l'intero bundle.

Ti stai chiedendo anche dove ottenere i certificati? Io (e altri) consiglio curl.haxx.se/ca. In una riga:

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

La posizione di Fedora Core 2 è /usr/share/ssl/certs/ca-bundle.crt.


Va bene, ma come posso essere sicuro che il certificato che aggiungerò non andrà perso al prossimo aggiornamento di ca-bundle.crt? C'è un posto dove posso mettere quello nuovo dove verrà automaticamente incluso?
Andrew Schulman,

A partire dal 2006, gli aggiornamenti di openssl non dovrebbero sostituire il file ca-bundle.crt (consultare rhn.redhat.com/errata/RHSA-2006-0661.html ). Tuttavia, se hai installato un altro pacchetto, come il pacchetto ca-certificate raccomandato da @mgorven, mi aspetto che venga sovrascritto manualmente.
Nada,

36

Il modo consigliato per farlo sui sistemi RHEL 6+ è utilizzare lo strumento update-ca-trust , che è ora installato per impostazione predefinita.

# 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

Pertanto, è sufficiente rilasciare il file crt su /etc/pki/ca-trust/source/anchors/e per eseguire lo strumento. Lavoro fatto. Questo è sicuro da fare, non è necessario eseguire alcun backup. La pagina di manuale completa è disponibile qui: https://www.mankier.com/8/update-ca-trust


Ciao, funziona per te? Ho appena provato a seguire lo scenario da access.redhat.com/solutions/1549003 e non funziona per me.
Kirby,

6

RHEL fornisce i certificati CA Mozilla come parte del ca-certificatespacchetto (installarlo con yumse non è già installato). Per dire a cURL di usarli, usa il --cacertparametro in questo modo.

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

Ho provato yum install ca-certificatese ottenutoNo package ca-certificates available
Andrew

1
RHEL6 ha questo pacchetto; suppongo che tu stia utilizzando una versione precedente. Sfortunatamente l'elenco non è cambiato dal 2010, grazie per averci aggiornato su redhat.
Dan Pritts,

Sto usando RHEL7 su AWS EC2, ho appena aggiornato il mio pacchetto ca-certificates.noarch 0:2014.1.98-70.0.el7_0- purtroppo non ha risolto il mio problema, ma ho pensato di aggiungere queste informazioni.
DuffJ,

6

Probabilmente dipende quale versione di Redhat. Puoi trovare quale pacchetto aggiorna effettivamente il file facendo:

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

Il mio risultato ha mostrato che openssl-0.9.8e-12.el5 deve essere aggiornato.

Se non ci sono certificati aggiornati nella tua distribuzione, devi aggiornare manualmente, secondo la risposta di Nada.


6

Dal commento di Dan Pritts, Red Hat ha aggiornato più spesso i bundle di certificati per le versioni RHEL supportate; puoi vederlo abbastanza facilmente nel log delle modifiche del pacchetto. I certificati di RHEL 6 sono stati aggiornati due volte nel 2013 e due volte nel 2014.

Tutte le RHEL e le distro correlate / clone / derivate forniscono un file bundle su /etc/pki/tls/certs/ca-bundle.crt, e lo stesso file su /etc/pki/tls/cert.pem(nelle distribuzioni precedenti cert.pemè un collegamento simbolico a ca-bundle.crt; nelle distribuzioni più recenti entrambi sono collegamenti simbolici a un file generato da update-ca-trust).

In RHEL 6 e versioni successive, il bundle fa parte del pacchetto "ca-certificate". In RHEL 5 e precedenti fa parte del pacchetto 'openssl'.

In RHEL 6 con l'aggiornamento https://rhn.redhat.com/errata/RHEA-2013-1596.html e qualsiasi RHEL più recente, è disponibile il sistema dei "certificati di sistema condivisi" (è necessario eseguirlo update-ca-trust enableper abilitarlo) e il migliore il metodo è quello dato da lzap. Un vantaggio di questo sistema è che funziona per applicazioni basate su NSS e GnuTLS e su quelle basate su OpenSSL. Nota che puoi anche diffidare di un certificato inserendolo nella directory /etc/pki/ca-trust/source/blacklist/.

In RHEL 5 e precedenti (e RHEL 6 se non si desidera utilizzare il nuovo sistema) è possibile fidarsi di CA aggiuntive inserendo i propri file di certificato in formato PEM con l'estensione.pem in / etc / pki / tls / certs ed eseguendo c_rehash(potrebbe anche essere necessario yum install /usr/bin/c_rehash). Funzionerà solo con software che utilizza i truststori predefiniti di OpenSSL. È meglio che modificare o sostituire il file bundle perché consente di continuare a ricevere aggiornamenti ufficiali sul file bundle.

Il software che utilizza direttamente una delle posizioni dei file del bundle (anziché richiedere a OpenSSL di utilizzare gli archivi fiduciari predefiniti del sistema) non rispetterà la modifica; se si dispone di tale software, si è bloccati durante la modifica del file bundle (o il miglioramento del software). Il software che non utilizza affatto OpenSSL non rispetterà il certificato aggiunto.


3

Ho dovuto farlo su una vecchia scatola RHEL5. Ho colpito il fermo 22 ... curl rifiuterebbe il download di https perché i certificati sulla macchina erano troppo vecchi per convalidare i certificati curl.haxx.se.

Ho usato l'opzione --insecure di curl per forzare il download di https. (Sì, lo so ... è "insicuro".)

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


1

Per RHEL 6 , sono stato in grado di risolvere questo problema aggiornando e reinstallando l'ultimo pacchetto CA certs di Red Hat:

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

(Nel mio caso, questo è stato sufficiente per consentire l'attendibilità del nuovo certificato di firma "Let's Encrypt Authority X3".)


Il comando ha funzionato per me (CentOS 6) ma non ha risolto il mio problema (con un certificato emesso da "DigiCert SHA2 Secure Server CA")
rinogo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.