Come impostare e configurare una Certificate Authority (CA) su Ubuntu 20.04
Introduzione
Una Certificate Authority (CA) è un’entità responsabile dell’emissione di certificati digitali per verificare le identità su internet. Sebbene le CA pubbliche siano una scelta popolare per verificare l’identità di siti web e altri servizi forniti al pubblico generale, le CA private sono tipicamente usate per gruppi chiusi e servizi privati.
Costruire un’Autorità di Certificazione privata vi permetterà di configurare, testare ed eseguire programmi che richiedono connessioni criptate tra un client e un server. Con una CA privata, puoi emettere certificati per utenti, server o singoli programmi e servizi all’interno della tua infrastruttura.
Alcuni esempi di programmi su Linux che utilizzano la propria CA privata sono OpenVPN e Puppet. Potete anche configurare il vostro server web per utilizzare i certificati emessi da una CA privata, al fine di far coincidere gli ambienti di sviluppo e di staging con i server di produzione che utilizzano TLS per criptare le connessioni.
In questa guida, impareremo come impostare una Certificate Authority privata su un server Ubuntu 20.04, e come generare e firmare un certificato di prova utilizzando la vostra nuova CA. Imparerete anche come importare il certificato pubblico del server CA nell’archivio dei certificati del vostro sistema operativo in modo da poter verificare la catena di fiducia tra la CA e i server o gli utenti remoti. Infine imparerai come revocare i certificati e distribuire una Certificate Revocation List per assicurarti che solo gli utenti e i sistemi autorizzati possano usare i servizi che si basano sulla tua CA.
Prequisiti
Per completare questo tutorial, avrai bisogno di accedere a un server Ubuntu 20.04 per ospitare il tuo server CA. Avrete bisogno di configurare un utente non root con privilegi sudo
prima di iniziare questa guida. Potete seguire la nostra guida alla configurazione iniziale del server Ubuntu 20.04 per configurare un utente con i permessi appropriati. Il tutorial collegato imposterà anche un firewall, che si presume sia in funzione per tutta questa guida.
Questo server sarà chiamato CA Server in questo tutorial.
Assicuratevi che il CA Server sia un sistema autonomo. Sarà usato solo per importare, firmare e revocare le richieste di certificati. Non dovrebbe eseguire nessun altro servizio, e idealmente sarà offline o completamente spento quando non stai lavorando attivamente con la tua CA.
Nota: L’ultima sezione di questo tutorial è opzionale se vuoi imparare a firmare e revocare certificati. Se scegli di completare questi passi pratici, avrai bisogno di un secondo server Ubuntu 20.04 o puoi anche usare il tuo computer Linux locale con Ubuntu o Debian, o distribuzioni derivate da una di queste.
Passo 1 – Installazione di Easy-RSA
Il primo compito in questo tutorial è installare l’insieme di script easy-rsa
sul tuo CA Server. easy-rsa
è uno strumento di gestione dell’Autorità di Certificazione che userai per generare una chiave privata e un certificato di radice pubblica, che poi userai per firmare le richieste dei client e dei server che si appoggeranno alla tua CA.
Accedi al tuo Server CA come utente sudo non root che hai creato durante i passi iniziali di configurazione ed esegui quanto segue:
- sudo apt update
- sudo apt install easy-rsa
Ti verrà richiesto di scaricare il pacchetto e di installarlo. Premi y
per confermare che vuoi installare il pacchetto.
A questo punto hai tutto quello che ti serve impostato e pronto per usare Easy-RSA. Nel prossimo passo creerai una Public Key Infrastructure, e poi inizierai a costruire la tua Certificate Authority.
Step 2 – Preparare una Directory Public Key Infrastructure
Ora che hai installato easy-rsa
, è il momento di creare uno scheletro di Public Key Infrastructure (PKI) sul CA Server. Assicurati di essere ancora loggato come utente non root e crea una directory easy-rsa
. Assicuratevi di non usare sudo per eseguire nessuno dei seguenti comandi, poiché il vostro utente normale dovrebbe gestire e interagire con la CA senza privilegi elevati.
- mkdir ~/easy-rsa
Questo creerà una nuova directory chiamata easy-rsa
nella vostra cartella home. Useremo questa directory per creare collegamenti simbolici che puntano ai file del pacchetto easy-rsa
che abbiamo installato nel passo precedente. Questi file si trovano nella cartella /usr/share/easy-rsa
del CA Server.
Crea i collegamenti simbolici con il comando ln
:
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Nota: Mentre altre guide potrebbero istruirti a copiare i file del pacchetto easy-rsa
nella tua directory PKI, questo tutorial adotta un approccio basato sui collegamenti simbolici. Di conseguenza, qualsiasi aggiornamento del pacchetto easy-rsa
si rifletterà automaticamente negli script della tua PKI.
Per limitare l’accesso alla tua nuova directory PKI, assicurati che solo il proprietario possa accedervi usando il comando chmod
:
- chmod 700 /home/sammy/easy-rsa
Infine, inizializza la PKI all’interno della directory easy-rsa
:
- cd ~/easy-rsa
- ./easyrsa init-pki
Outputinit-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/sammy/easy-rsa/pki
Dopo aver completato questa sezione hai una directory che contiene tutti i file necessari per creare una Certificate Authority. Nella prossima sezione creerai la chiave privata e il certificato pubblico per la tua CA.
Passo 3 – Creare un’Autorità di Certificazione
Prima di poter creare la chiave privata e il certificato della tua CA, devi creare e popolare un file chiamato vars
con alcuni valori predefiniti. Per prima cosa cd
nella directory easy-rsa
, poi creerai e modificherai il file vars
con nano
o con il tuo editor di testo preferito:
- cd ~/easy-rsa
- nano vars
Una volta aperto il file, incolla le seguenti righe e modifica ogni valore evidenziato per riflettere le informazioni della tua organizzazione. La parte importante è assicurarsi di non lasciare nessuno dei valori in bianco:
~/easy-rsa/varsset_var EASYRSA_REQ_COUNTRY "US"set_var EASYRSA_REQ_PROVINCE "NewYork"set_var EASYRSA_REQ_CITY "New York City"set_var EASYRSA_REQ_ORG "DigitalOcean"set_var EASYRSA_REQ_EMAIL "[email protected]"set_var EASYRSA_REQ_OU "Community"set_var EASYRSA_ALGO "ec"set_var EASYRSA_DIGEST "sha512"
Quando hai finito, salva e chiudi il file. Se stai usando nano
, puoi farlo premendo CTRL+X
, poi Y
e ENTER
per confermare. Ora sei pronto per costruire la tua CA.
Per creare la coppia di chiavi pubbliche e private di root per la tua Autorità di Certificazione, esegui nuovamente il comando ./easy-rsa
, questa volta con l’opzione build-ca
:
- ./easyrsa build-ca
Nell’output, vedrai alcune righe sulla versione di OpenSSL e ti verrà richiesto di inserire una passphrase per la tua coppia di chiavi. Assicuratevi di scegliere una passphrase forte e annotatela in un posto sicuro. Avrai bisogno di inserire la passphrase ogni volta che avrai bisogno di interagire con la tua CA, per esempio per firmare o revocare un certificato.
Ti verrà anche chiesto di confermare il Common Name (CN) della tua CA. Il CN è il nome usato per riferirsi a questa macchina nel contesto dell’Autorità di Certificazione. Potete inserire qualsiasi stringa di caratteri per il Common Name della CA ma, per semplicità, premete ENTER per accettare il nome predefinito.
Output. . .Enter New CA Key Passphrase:Re-Enter New CA Key Passphrase:. . .Common Name (eg: your user, host, or server name) :CA creation complete and you may now import and sign cert requests.Your new CA certificate file for publishing is at:/home/sammy/easy-rsa/pki/ca.crt
Nota: Se non vuoi che ti venga richiesta una password ogni volta che interagisci con la tua CA, puoi eseguire il comando build-ca
con l’opzione nopass
, in questo modo:
- ./easyrsa build-ca nopass
Ora hai due file importanti – ~/easy-rsa/pki/ca.crt
e ~/easy-rsa/pki/private/ca.key
– che costituiscono i componenti pubblici e privati di una Certificate Authority.
-
ca.crt
è il file del certificato pubblico della CA. Utenti, server e client useranno questo certificato per verificare che fanno parte della stessa rete di fiducia. Ogni utente e server che usa la vostra CA dovrà avere una copia di questo file. Tutte le parti faranno affidamento sul certificato pubblico per assicurarsi che qualcuno non stia impersonando un sistema ed eseguendo un attacco Man-in-the-middle. -
ca.key
è la chiave privata che la CA usa per firmare i certificati per server e client. Se un aggressore ha accesso alla tua CA e, a sua volta, al tuo fileca.key
, dovrai distruggere la tua CA. Questo è il motivo per cui il tuo fileca.key
dovrebbe essere solo sulla tua macchina CA e che, idealmente, la tua macchina CA dovrebbe essere tenuta offline quando non firma richieste di certificati come misura di sicurezza extra.
Con questo, la tua CA è a posto ed è pronta per essere usata per firmare richieste di certificati e per revocare certificati.
Passo 4 – Distribuire il certificato pubblico della tua Autorità di Certificazione
Ora la tua CA è configurata e pronta ad agire come radice di fiducia per qualsiasi sistema che vuoi configurare per usarla. Puoi aggiungere il certificato della CA ai tuoi server OpenVPN, server web, server di posta e così via. Qualsiasi utente o server che ha bisogno di verificare l’identità di un altro utente o server nella tua rete dovrebbe avere una copia del file ca.crt
importata nel negozio dei certificati del suo sistema operativo.
Per importare il certificato pubblico della CA in un secondo sistema Linux come un altro server o un computer locale, prima ottieni una copia del file ca.crt
dal tuo server CA. Puoi usare il comando cat
per mostrarlo in un terminale, e poi copiarlo e incollarlo in un file sul secondo computer che sta importando il certificato. Puoi anche usare strumenti come scp
, rsync
per trasferire il file tra sistemi. Tuttavia useremo il copia e incolla con nano
in questo passo poiché funzionerà su tutti i sistemi.
Come utente non root sul CA Server, esegui il seguente comando:
- cat ~/easy-rsa/pki/ca.crt
Ci sarà un output nel tuo terminale simile al seguente:
Output-----BEGIN CERTIFICATE-----MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .-----END CERTIFICATE-----
Copia tutto, incluse le linee -----BEGIN CERTIFICATE-----
e -----END CERTIFICATE-----
e i trattini.
Sul vostro secondo sistema Linux usate nano
o il vostro editor di testo preferito per aprire un file chiamato /tmp/ca.crt
:
- nano /tmp/ca.crt
Incollate il contenuto che avete appena copiato dal CA Server nell’editor. Quando hai finito, salva e chiudi il file. Se stai usando nano
, puoi farlo premendo CTRL+X
, poi Y
e ENTER
per confermare.
Ora che hai una copia del file ca.crt
sul tuo secondo sistema Linux, è il momento di importare il certificato nel suo negozio di certificati del sistema operativo.
Su sistemi basati su Ubuntu e Debian, esegui i seguenti comandi come utente non root per importare il certificato:
- sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
- sudo update-ca-certificates
Per importare il certificato del CA Server su sistemi basati su CentOS, Fedora o RedHat, copia e incolla il contenuto del file sul sistema proprio come nell’esempio precedente in un file chiamato /tmp/ca.crt
. Successivamente, copierai il certificato in /etc/pki/ca-trust/source/anchors/
, poi esegui il comando update-ca-trust
.
- sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
- sudo update-ca-trust
Ora il tuo secondo sistema Linux si fiderà di qualsiasi certificato che è stato firmato dal server CA.
Nota: Se stai usando la tua CA con server web e usi Firefox come browser dovrai importare il certificato pubblico ca.crt
direttamente in Firefox. Firefox non utilizza l’archivio dei certificati del sistema operativo locale. Per i dettagli su come aggiungere il certificato della tua CA a Firefox vedi questo articolo di supporto di Mozilla su come impostare le autorità di certificazione (CA) in Firefox.
Se stai usando la tua CA per integrarsi con un ambiente Windows o computer desktop, vedi la documentazione su come usare certutil.exe
per installare un certificato CA.
Se stai usando questo tutorial come prerequisito per un altro tutorial, o hai familiarità con come firmare e revocare certificati puoi fermarti qui. Se vuoi saperne di più su come firmare e revocare i certificati, allora la seguente sezione opzionale ti spiegherà ogni processo in dettaglio.
(Opzionale) – Creare richieste di firma di certificati e revocare certificati
Le seguenti sezioni del tutorial sono opzionali. Se hai completato tutti i passi precedenti allora hai un’Autorità di Certificazione completamente configurata e funzionante che puoi usare come prerequisito per altri tutorial. Puoi importare il file ca.crt
della tua CA e verificare i certificati nella tua rete che sono stati firmati dalla tua CA.
Se vuoi fare pratica e imparare di più su come firmare le richieste di certificati e come revocare i certificati, allora queste sezioni opzionali spiegheranno come funzionano entrambi i processi.
(Opzionale) – Creare e firmare una richiesta pratica di certificato
Ora che hai una CA pronta all’uso, puoi fare pratica generando una chiave privata e una richiesta di certificato per familiarizzare con il processo di firma e distribuzione.
Una richiesta di firma di certificato (CSR) consiste di tre parti: una chiave pubblica, informazioni di identificazione sul sistema richiedente, e una firma della richiesta stessa, che è creata usando la chiave privata della parte richiedente. La chiave privata sarà tenuta segreta, e sarà usata per criptare le informazioni che chiunque abbia il certificato pubblico firmato può poi decriptare.
I seguenti passi saranno eseguiti sul vostro secondo sistema Ubuntu o Debian, o su una distribuzione derivata da uno di questi. Può essere un altro server remoto, o una macchina Linux locale come un portatile o un computer desktop. Poiché easy-rsa
non è disponibile di default su tutti i sistemi, useremo lo strumento openssl
per creare una chiave privata e un certificato per la pratica.
openssl
è di solito installato di default sulla maggior parte delle distribuzioni Linux, ma solo per essere sicuri, eseguite quanto segue sul vostro sistema:
- sudo apt update
- sudo apt install openssl
Quando vi viene richiesto di installare openssl
inserite y
per continuare con i passi dell’installazione. Ora sei pronto a creare una pratica CSR con openssl
.
Il primo passo che devi completare per creare una CSR è generare una chiave privata. Per creare una chiave privata usando openssl
, create una directory practice-csr
e poi generate una chiave al suo interno. Faremo questa richiesta per un server fittizio chiamato sammy-server
, invece di creare un certificato che è usato per identificare un utente o un’altra CA.
- mkdir ~/practice-csr
- cd ~/practice-csr
- openssl genrsa -out sammy-server.key
OutputGenerating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)
Ora che avete una chiave privata potete creare una corrispondente CSR, sempre usando l’utilità openssl
. Ti verrà richiesto di riempire una serie di campi come Paese, Stato e Città. Puoi inserire un .
se vuoi lasciare un campo vuoto, ma sii consapevole che se questa fosse una vera CSR, è meglio usare i valori corretti per la tua località e organizzazione:
- openssl req -new -key sammy-server.key -out sammy-server.req
Output. . .-----Country Name (2 letter code) :USState or Province Name (full name) :New YorkLocality Name (eg, city) :New York CityOrganization Name (eg, company) :DigitalOceanOrganizational Unit Name (eg, section) :CommunityCommon Name (eg, your name or your server's hostname) :sammy-serverEmail Address :Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password :An optional company name :
Se vuoi aggiungere automaticamente questi valori come parte dell’invocazione openssl
invece che attraverso il prompt interattivo, puoi passare l’argomento -subj
a OpenSSL. Assicuratevi di modificare i valori evidenziati in modo che corrispondano alla vostra sede, organizzazione e nome del server:
- openssl req -new -key sammy-server.key -out server.req -subj \
- /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server
Per verificare il contenuto di una CSR, potete leggere un file di richiesta con openssl
ed esaminare i campi al suo interno:
- openssl req -in sammy-server.req -noout -subject
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server
Una volta che siete soddisfatti dell’oggetto della vostra richiesta di certificato pratica, copiate il file sammy-server.req
sul vostro server CA usando scp
:
- scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req
In questo passo avete generato una Certificate Signing Request per un server fittizio chiamato sammy-server
. In uno scenario reale, la richiesta potrebbe provenire da qualcosa come un server web di staging o di sviluppo che ha bisogno di un certificato TLS per i test; oppure potrebbe provenire da un server OpenVPN che sta richiedendo un certificato in modo che gli utenti possano connettersi ad una VPN. Nel prossimo passo, procederemo a firmare la richiesta di firma del certificato usando la chiave privata del CA Server.
(Opzionale) – Firmare una CSR
Nel passo precedente, hai creato una richiesta di certificato e una chiave pratica per un server fittizio. L’hai copiata nella directory /tmp
sul tuo server CA, emulando il processo che useresti se avessi clienti o server reali che ti inviano richieste CSR che devono essere firmate.
Continuando con lo scenario fittizio, ora il server CA deve importare il certificato di pratica e firmarlo. Una volta che una richiesta di certificato viene convalidata dalla CA e ritrasmessa al server, i client che si fidano dell’Autorità di Certificazione potranno fidarsi anche del certificato appena emesso.
Siccome opereremo all’interno della PKI della CA dove è disponibile l’utilità easy-rsa
, i passi della firma useranno l’utilità easy-rsa
per rendere le cose più facili, invece di usare direttamente il openssl
come abbiamo fatto nell’esempio precedente.
Il primo passo per firmare la CSR fittizia è importare la richiesta del certificato usando lo script easy-rsa
:
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output. . .The request has been successfully imported with a short name of: sammy-serverYou may now use this name to perform signing operations on this request.
Ora puoi firmare la richiesta eseguendo lo script easyrsa
con l’opzione sign-req
, seguita dal tipo di richiesta e dal Common Name che è incluso nella CSR. Il tipo di richiesta può essere uno tra client
, server
o ca
. Poiché stiamo facendo pratica con un certificato per un server fittizio, assicuratevi di usare il tipo di richiesta server
:
- ./easyrsa sign-req server sammy-server
Nell’output, vi verrà chiesto di verificare che la richiesta provenga da una fonte affidabile. Digita yes
e poi premi ENTER
per confermarlo:
OutputYou are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.Request subject, to be signed as a server certificate for 3650 days:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Confirm request details: yes. . .Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt
Se hai criptato la tua chiave CA, a questo punto ti verrà richiesta la tua password.
Con questi passaggi completati, hai firmato la CSR sammy-server.req
usando la chiave privata del CA Server in /home/sammy/easy-rsa/pki/private/ca.key
. Il file sammy-server.crt
risultante contiene la chiave di crittografia pubblica del server di pratica, così come una nuova firma del CA Server. Lo scopo della firma è di dire a chiunque si fidi della CA che può fidarsi anche del certificato sammy-server
.
Se questa richiesta fosse per un vero server come un server web o un server VPN, l’ultimo passo del CA Server sarebbe quello di distribuire i nuovi file sammy-server.crt
e ca.crt
dal CA Server al server remoto che ha fatto la richiesta CSR:
- scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
- scp pki/ca.crt sammy@your_server_ip:/tmp
A questo punto, sareste in grado di usare il certificato rilasciato con qualcosa come un server web, una VPN, uno strumento di gestione della configurazione, un sistema di database, o per scopi di autenticazione del client.
(Opzionale) – Revoca di un certificato
Occasione, potresti aver bisogno di revocare un certificato per impedire a un utente o a un server di usarlo. Forse il portatile di qualcuno è stato rubato, un server web è stato compromesso, o un dipendente o un appaltatore ha lasciato l’organizzazione.
Per revocare un certificato, il processo generale segue questi passi:
- Revoca il certificato con il comando
./easyrsa revoke client_name
. - Genera una nuova CRL con il comando
./easyrsa gen-crl
. - Trasferite il file
crl.pem
aggiornato al server o ai server che si basano sulla vostra CA, e su quei sistemi copiatelo nella o nelle directory necessarie per i programmi che vi fanno riferimento. - Riavviate tutti i servizi che usano la vostra CA e il file CRL.
Potete usare questo processo per revocare qualsiasi certificato che avete rilasciato in precedenza in qualsiasi momento. Esamineremo ogni passo in dettaglio nelle sezioni seguenti, iniziando con il comando revoke
.
Revoca un certificato
Per revocare un certificato, vai alla directory easy-rsa
sul tuo server CA:
- cd ~/easy-rsa
Poi, esegui lo script easyrsa
con l’opzione revoke
, seguito dal nome del client che vuoi revocare. Seguendo l’esempio pratico di cui sopra, il Common Name del certificato è sammy-server
:
- ./easyrsa revoke sammy-server
Questo vi chiederà di confermare la revoca inserendo yes
:
OutputPlease confirm you wish to revoke the certificate with the following subject:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Continue with revocation: yes. . .Revoking Certificate 8348B3F146A765581946040D5C4D590A. . .
Nota il valore evidenziato sulla linea Revoking Certificate
. Questo valore è il numero di serie unico del certificato che viene revocato. Se volete esaminare la lista di revoca nell’ultimo passo di questa sezione per verificare che il certificato vi sia dentro, avrete bisogno di questo valore.
Dopo aver confermato l’azione, la CA revocherà il certificato. Tuttavia, i sistemi remoti che si affidano alla CA non hanno modo di controllare se qualche certificato è stato revocato. Gli utenti e i server saranno ancora in grado di usare il certificato finché la Certificate Revocation List (CRL) della CA non sarà distribuita a tutti i sistemi che si affidano alla CA.
Nel prossimo passo genererai una CRL o aggiornerai un file crl.pem
esistente.
Generazione di una Certificate Revocation List
Ora che hai revocato un certificato, è importante aggiornare la lista dei certificati revocati sul tuo server CA. Una volta che hai una lista di revoca aggiornata sarai in grado di dire quali utenti e sistemi hanno certificati validi nella tua CA.
Per generare una CRL, esegui il comando easy-rsa
con l’opzione gen-crl
mentre sei ancora nella directory ~/easy-rsa
:
- ./easyrsa gen-crl
Se hai usato una passphrase quando hai creato il file ca.key
, ti verrà richiesto di inserirla. Il comando gen-crl
genererà un file chiamato crl.pem
, contenente l’elenco aggiornato dei certificati revocati per quella CA.
Poi dovrai trasferire il file crl.pem
aggiornato a tutti i server e client che si affidano a questa CA ogni volta che esegui il comando gen-crl
. Altrimenti, i client e i sistemi saranno ancora in grado di accedere ai servizi e ai sistemi che usano la tua CA, poiché questi servizi hanno bisogno di sapere lo stato revocato del certificato.
Trasferimento di una Certificate Revocation List
Ora che hai generato una CRL sul tuo server CA, hai bisogno di trasferirla ai sistemi remoti che si affidano alla tua CA. Per trasferire questo file ai tuoi server, puoi usare il comando scp
.
Nota: Questo tutorial spiega come generare e distribuire una CRL manualmente. Mentre ci sono metodi più robusti e automatizzati per distribuire e controllare le liste di revoca come OCSP-Stapling, la configurazione di questi metodi va oltre lo scopo di questo articolo.
Assicuratevi di aver effettuato l’accesso al vostro server CA come utente non root ed eseguite quanto segue, sostituendo l’IP del vostro server o il nome DNS al posto di your_server_ip
:
- scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp
Ora che il file è sul sistema remoto, l’ultimo passo è aggiornare qualsiasi servizio con la nuova copia della lista di revoca.
Aggiornamento dei servizi che supportano una CRL
L’elenco dei passi che devi usare per aggiornare i servizi che usano il file crl.pem
va oltre lo scopo di questo tutorial. In generale avrete bisogno di copiare il file crl.pem
nella posizione che il servizio si aspetta e poi riavviarlo usando systemctl
.
Una volta che avrete aggiornato i vostri servizi con il nuovo file crl.pem
, i vostri servizi saranno in grado di rifiutare connessioni da client o server che stanno usando un certificato revocato.
Esame e verifica del contenuto di una CRL
Se volete esaminare un file CRL, per esempio per confermare una lista di certificati revocati, usate il seguente comando openssl
dalla vostra directory easy-rsa
sul vostro server CA:
- cd ~/easy-rsa
- openssl crl -in pki/crl.pem -noout -text
Potete anche eseguire questo comando su qualsiasi server o sistema che abbia lo strumento openssl
installato con una copia del file crl.pem
. Per esempio, se hai trasferito il file crl.pem
sul tuo secondo sistema e vuoi verificare che il certificato sammy-server
sia revocato, puoi usare un comando openssl
come il seguente, sostituendo il numero di serie che hai notato prima quando hai revocato il certificato al posto di quello evidenziato qui:
- openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT
Nota come il comando grep
è usato per verificare il numero di serie unico che hai notato nel passo della revoca. Ora puoi verificare il contenuto della tua Certificate Revocation List su qualsiasi sistema che si basa su di essa per limitare l’accesso a utenti e servizi.
Conclusione
In questo tutorial hai creato un’autorità di certificazione privata usando il pacchetto Easy-RSA su un server Ubuntu 20.04 standalone. Hai imparato come funziona il modello di fiducia tra le parti che si affidano alla CA. Hai anche creato e firmato un Certificate Signing Request (CSR) per un server di pratica e poi hai imparato come revocare un certificato. Infine, hai imparato come generare e distribuire una Certificate Revocation List (CRL) per ogni sistema che si affida alla tua CA per assicurare che agli utenti o ai server che non dovrebbero accedere ai servizi sia impedito di farlo.
Ora puoi emettere certificati per gli utenti e usarli con servizi come OpenVPN. Puoi anche usare la tua CA per configurare i server web di sviluppo e staging con certificati per proteggere i tuoi ambienti non di produzione. Usare una CA con certificati TLS durante lo sviluppo può aiutare a garantire che il tuo codice e gli ambienti corrispondano il più possibile all’ambiente di produzione.
Se vuoi saperne di più su come usare OpenSSL, il nostro OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs tutorial ha un sacco di informazioni aggiuntive per aiutarti a diventare più familiare con i fondamenti di OpenSSL.
Il nostro tutorial OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs