GNU/Linux >> Linux Esercitazione >  >> Linux

Rendere disponibili i certificati CA agli strumenti della riga di comando di Linux

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.]


Linux
  1. I miei 5 strumenti di amministrazione di sistema Linux preferiti

  2. Creare una partizione di ripristino in Linux incorporato?

  3. Cronologia della riga di comando in Linux

  4. Microsoft Teams è ora disponibile su Linux

  5. Elenca tutti i certificati ssl ca disponibili

Come installare strumenti di sviluppo in Linux

Strumenti Linux:du vs. df

Guida all'installazione di VMware Tools su Linux

Linux:diagramma del kernel Linux vs. Strumenti per le prestazioni?

Le 10 migliori distribuzioni Linux

I 10 migliori strumenti di lettura rapida per Linux disponibili al momento