Tutti i noti browser Web grafici vengono forniti con una raccolta di certificati di autorità di certificazione (CA) noti e affidabili, quindi quando visiti un sito con un certificato firmato da uno di quei certificati CA, anche il browser considera attendibile il sito. In caso contrario, il browser esegue una serie di avvisi e opzioni per aggiungere un'eccezione dopo averti incoraggiato a verificare il certificato. Ci sono anche opzioni per importare certificati CA aggiuntivi, come quelli documentati per Firefox.
Utilizzo di certificati CA con utilità della riga di comando
I certificati CA possono essere resi disponibili anche dalla riga di comando. Un pacchetto incluso in molte distribuzioni, tra cui Red Hat Enterprise Linux e Fedora, si chiama ca-certificates
. Questo pacchetto si autodefinisce contenente "l'insieme di certificati CA scelti dalla Mozilla Foundation per l'uso con l'infrastruttura PKI Internet". Questo pacchetto include gli stessi certificati CA noti che si trovano in Firefox. Può essere utilizzato da qualsiasi applicazione CLI che guarda direttamente a /etc/pki/ca-trust/extracted
directory, insieme alle applicazioni CLI che caricano uno dei moduli di attendibilità PKCS#11.
Utilità della riga di comando come curl
e wget
può utilizzare questi certificati CA per convalidare i certificati del server. Anche molti strumenti forniti con Red Hat Enterprise Linux utilizzano questi certificati, anche per le interazioni con il supporto di Red Hat (redhat-support-tool
), cluster Red Hat OpenShift (oc
) e server Red Hat Satellite 6 (hammer
). Anche molte altre interazioni con le interfacce API del server utilizzano SSL/TLS e dovrebbero convalidare i certificati offerti.
Con i ca-certificates
pacchetto installato, posso usare curl
per visualizzare o scaricare contenuti URL da un sito utilizzando un certificato firmato da una nota CA senza errori:
$ curl https://access.redhat.com -o /tmp/sample
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 103k 0 103k 0 0 339k 0 --:--:-- --:--:-- --:--:-- 337k
Se provo ad accedere a un sito interno che ha un certificato autofirmato (o un certificato firmato da una CA che non è incluso con i ca-certificates
pacchetto) ricevo un messaggio che dice che la connessione è stata rifiutata perché il certificato non è attendibile:
$ curl https://somehost.internal-FQDN/
curl: (60) SSL certificate problem: self-signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Alcuni documenti incoraggiano una semplice connessione non sicura per questi siti interni e attendibili. Curl può connettersi in modo non sicuro con -k
opzione:
$ curl -k https://somehost.internal-FQDN/
Oppure, se ho verificato e scaricato il mio certificato CA interno, posso dire a curl
per verificare il sito con quel certificato:
$ curl --cacert /path/to/cert-file https://somehost.internal-FQDN/
Altri programmi sono simili. Con lo strumento OpenShift e Origin per la gestione delle applicazioni (oc
), una connessione a un cluster installato predefinito potrebbe non riconoscere il certificato CA autofirmato generato che il cluster utilizza per firmare altri certificati interni. Questo problema include una connessione a CodeReady Containers:
$ oc login -u developer -p developer https://api.crc.testing:6443
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n):
Se disponi di una copia dei certificati, specifica il certificato client con il --client-certificate=""
opzione o il certificato CA con --certificate-authority=""
opzione, quando si utilizza oc
comando.
Server Red Hat Satellite e lo strumento CLI hammer
funzionano in modo simile, ma il certificato CA può essere specificato dalla riga di comando o nel ~/.hammer/cli_config.yml
file. Il hammer
Il comando ha anche un'opzione per importare il certificato CA Satellite direttamente nel .hammer
dell'utente directory di configurazione:
$ hammer --fetch-ca-cert https://satellite.example.com
CA certificate for https://satellite.example.com was stored to
..output omitted...
Questo comando rende disponibile il certificato solo per il singolo utente e dovrebbe essere ripetuto per ogni utente del sistema. Per rendere il certificato disponibile a tutti gli utenti di un sistema, l'output del comando martello suggerisce anche di utilizzare ca-certificates
.
Aggiornamento di ca-certificates
per convalidare i siti con un certificato CA interno
Invece di specificare manualmente il certificato CA con ogni comando, possiamo aggiungere i nostri certificati CA interni al certificato CA fornito da ca-certificates
pacchetto. Questo pacchetto fornisce una struttura di directory in /etc/pki/
per gestire i certificati e un comando update-ca-trust
per gestire la "configurazione consolidata e dinamica dei certificati CA e dei relativi trust:"
$ ls /etc/pki/ca-trust/
ca-legacy.conf extracted README source
$ ls /etc/pki/ca-trust/source
anchors blacklist ca-bundle.legacy.crt README
Per aggiungere un certificato, scaricalo, inseriscilo in /etc/pki/ca-trust/source/anchors
directory, quindi eseguire il comando update-ca-trust
. Dovrai essere root per queste due attività:
$ sudo curl http://satellite.example.com/pub/katello-server-ca.crt -o /etc/pki/ca-trust/source/anchors/satellite-ca.crt
$ sudo update-ca-trust
Una volta emesso il comando di aggiornamento, il certificato viene reso disponibile tramite il /etc/pki/ca-trust/extracted
albero:
$ ls /etc/pki/ca-trust/extracted
edk2 java openssl pem README
Le applicazioni che cercano in questa directory per verificare i certificati possono utilizzare uno qualsiasi dei formati forniti. Il comando update gestisce le copie, le conversioni e il consolidamento per i diversi formati. La pagina man di update-ca-trust
contiene maggiori informazioni sulla struttura della directory, i formati e le modalità di accesso ai certificati, ma un modo rapido per elencare tutti i soggetti del certificato nel pacchetto è con il seguente awk
e openssl
comandi:
$ awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Ora che ho aggiunto il certificato CA per il mio Satellite Server, posso usare curl
senza ulteriori opzioni di certificato per accedere all'API:
$ curl --request GET --user admin https://satellite.example.com/katello/api/organizations
Enter host password for user 'admin':
{ "total": 1, "subtotal": 1,
...output omitted...
Lo stesso vale per oc
comandi, hammer
comandi e molte altre applicazioni da riga di comando. Queste utilità possono utilizzare i certificati gestiti da ca-trust
per convalidare le tue connessioni.
[Vuoi saperne di più sulla sicurezza? Consulta l'elenco di controllo per la sicurezza e la conformità IT.]