Introduzione
Un'autorità di certificazione (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 in generale, le CA private vengono in genere utilizzate per gruppi chiusi e servizi privati.
La creazione di un'autorità di certificazione privata consentirà di configurare, testare ed eseguire programmi che richiedono connessioni crittografate 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 . Puoi anche configurare il tuo server web in modo che utilizzi certificati emessi da una CA privata per fare in modo che gli ambienti di sviluppo e gestione temporanea corrispondano ai server di produzione che utilizzano TLS per crittografare le connessioni.
In questa guida, imposterai un'autorità di certificazione privata su un server Ubuntu 22.04, quindi genererai e firmerai un certificato di test utilizzando la tua nuova CA. Imparerai anche come importare il certificato pubblico del server CA nell'archivio certificati del tuo sistema operativo in modo da poter verificare la catena di fiducia tra la CA e server o utenti remoti. Infine imparerai come revocare i certificati e distribuire un elenco di revoche di certificati per assicurarti che solo gli utenti e i sistemi autorizzati possano utilizzare i servizi che si basano sulla tua CA.
Prerequisiti
Per completare questo tutorial, avrai bisogno dell'accesso a un server Ubuntu 22.04 per ospitare il tuo server CA. Dovrai configurare una non root utente con sudo
privilegi prima di iniziare questa guida. Puoi seguire la nostra guida all'installazione iniziale del server Ubuntu 22.04 per configurare un utente con le autorizzazioni appropriate. Il tutorial collegato imposterà anche un firewall , che si presume sia presente in questa guida.
Questo server sarà denominato Server CA in questo tutorial.
Assicurarsi che CA Server sia un sistema autonomo. Verrà utilizzato solo per importare, firmare e revocare le richieste di certificati. Non dovrebbe eseguire altri servizi e, idealmente, sarà offline o sarà completamente spento quando non stai lavorando attivamente con la tua CA.
Nota: L'ultima sezione di questo tutorial è facoltativa se desideri informazioni sulla firma e la revoca dei certificati. Se scegli di completare questi passaggi pratici, avrai bisogno di un secondo server Ubuntu 22.04 oppure puoi anche utilizzare il tuo computer Linux locale che esegue Ubuntu o Debian, o distribuzioni derivate da uno di questi.
Fase 1:installazione di Easy-RSA
La prima attività in questo tutorial è installare easy-rsa
set di script su CA Server. easy-rsa
è uno strumento di gestione dell'autorità di certificazione che utilizzerai per generare una chiave privata e un certificato radice pubblico, che utilizzerai quindi per firmare richieste da client e server che si baseranno sulla tua CA.
Accedi al tuo CA Server come utente sudo non root che hai creato durante la procedura di configurazione iniziale ed esegui quanto segue:
- sudo apt update
- sudo apt install easy-rsa
Ti verrà chiesto di scaricare il pacchetto e installarlo. Premi y
per confermare che desideri installare il pacchetto.
A questo punto hai tutto quello che ti serve configurato e pronto per usare Easy-RSA. Nel passaggio successivo creerai un'infrastruttura a chiave pubblica, quindi inizierai a creare la tua autorità di certificazione.
Passaggio 2:preparazione di una directory dell'infrastruttura a chiave pubblica
Ora che hai installato easy-rsa
, è il momento di creare un'infrastruttura a chiave pubblica (PKI) scheletro su CA Server. Assicurati di essere ancora connesso come utente non root e crea un easy-rsa
directory. Assicurati di non utilizzare sudo per eseguire uno dei seguenti comandi, poiché l'utente normale dovrebbe gestire e interagire con la CA senza privilegi elevati.
- mkdir ~/easy-rsa
Questo creerà una nuova directory chiamata easy-rsa
nella tua cartella Inizio. Useremo questa directory per creare collegamenti simbolici che puntano a easy-rsa
file del pacchetto che abbiamo installato nel passaggio precedente. Questi file si trovano in /usr/share/easy-rsa
cartella sul server CA.
Crea i collegamenti simbolici con ln
comando:
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Nota: Mentre altre guide potrebbero indicarti di copiare easy-rsa
file del pacchetto nella directory PKI, questo tutorial adotta un approccio di collegamento simbolico. Di conseguenza, qualsiasi aggiornamento a easy-rsa
il pacchetto si rifletterà automaticamente negli script della tua PKI.
Per limitare l'accesso alla tua nuova directory PKI, assicurati che solo il proprietario possa accedervi utilizzando il chmod
comando:
- chmod 700 /home/sammy/easy-rsa
Infine, inizializza la PKI all'interno di easy-rsa
directory:
- 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 si dispone di una directory che contiene tutti i file necessari per creare un'autorità di certificazione. Nella prossima sezione creerai la chiave privata e il certificato pubblico per la tua CA.
Fase 3:creazione di 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 di default. Per prima cosa cd
nel easy-rsa
directory, quindi creerai e modificherai la vars
file con nano
o 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 sulla tua organizzazione. La parte importante qui è assicurarsi di non lasciare vuoto nessuno dei valori:
~/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"
Al termine, salva e chiudi il file. Se stai usando nano
, puoi farlo premendo CTRL+X
, quindi Y
e ENTER
per confermare. Ora sei pronto per creare la tua CA.
Per creare la coppia di chiavi pubblica e privata radice per la tua autorità di certificazione, esegui ./easy-rsa
comando di nuovo, questa volta con il build-ca
opzione:
- ./easyrsa build-ca
Nell'output, vedrai alcune righe sulla versione OpenSSL e ti verrà chiesto di inserire una passphrase per la tua coppia di chiavi. Assicurati di scegliere una passphrase forte e annotala in un posto sicuro. Dovrai inserire la passphrase ogni volta che devi interagire con la tua CA, ad esempio per firmare o revocare un certificato.
Ti verrà anche chiesto di confermare il nome comune (CN) per la tua CA. Il CN è il nome utilizzato per fare riferimento a questa macchina nel contesto dell'Autorità di Certificazione. È possibile inserire qualsiasi stringa di caratteri per il nome comune della CA, ma per semplicità, premere INVIO 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) [Easy-RSA CA]:
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 build-ca
comando con il nopass
opzione, 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 le componenti pubbliche e private di un'Autorità di Certificazione.
-
ca.crt
è il file del certificato pubblico della CA. Utenti, server e client utilizzeranno questo certificato per verificare che facciano parte della stessa rete di fiducia. Ogni utente e server che utilizza la tua CA dovrà disporre di 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 utilizzata dalla CA per firmare i certificati per server e client. Se un utente malintenzionato ottiene l'accesso alla tua CA e, a sua volta, al tuoca.key
file, dovrai distruggere la tua CA. Ecco perché il tuoca.key
il file dovrebbe solo essere sulla tua macchina CA e che, idealmente, la tua macchina CA dovrebbe essere tenuta offline quando non firmi richieste di certificati come misura di sicurezza aggiuntiva.
Con ciò, la tua CA è a posto ed è pronta per essere utilizzata per firmare richieste di certificati e revocare certificati.
Fase 4:distribuzione del certificato pubblico dell'autorità di certificazione
Ora la tua CA è configurata e pronta per fungere da radice di attendibilità per tutti i sistemi che desideri configurare per utilizzarla. Puoi aggiungere il certificato della CA ai tuoi server OpenVPN, server Web, server di posta e così via. Qualsiasi utente o server che deve verificare l'identità di un altro utente o server nella tua rete dovrebbe avere una copia di ca.crt
file importato nell'archivio certificati del loro sistema operativo.
Per importare il certificato pubblico della CA in un secondo sistema Linux come un altro server o un computer locale, procurati prima una copia del ca.crt
file dal server CA. Puoi usare il cat
comando per emetterlo in un terminale, quindi copiarlo e incollarlo in un file sul secondo computer che sta importando il certificato. Puoi anche utilizzare strumenti come scp
, rsync
per trasferire il file tra i sistemi. Tuttavia utilizzeremo il copia e incolla con nano
in questo passaggio poiché funzionerà su tutti i sistemi.
Come utente non root su CA Server, eseguire il comando seguente:
- cat ~/easy-rsa/pki/ca.crt
Verrà visualizzato un output nel tuo terminale simile al seguente:
Output-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw
. . .
. . .
-----END CERTIFICATE-----
Copia tutto, compreso il -----BEGIN CERTIFICATE-----
e -----END CERTIFICATE-----
linee e trattini.
Sul tuo secondo sistema Linux usa nano
o il tuo editor di testo preferito per aprire un file chiamato /tmp/ca.crt
:
- nano /tmp/ca.crt
Incolla i contenuti appena copiati da CA Server nell'editor. Al termine, salva e chiudi il file. Se stai usando nano
, puoi farlo premendo CTRL+X
, quindi Y
e ENTER
per confermare.
Ora che hai una copia di ca.crt
file sul tuo secondo sistema Linux, è ora di importare il certificato nell'archivio certificati del suo sistema operativo.
Sui sistemi basati su Ubuntu e Debian, esegui i seguenti comandi come utente non root per importare il certificato:
Distribuzioni derivate da Ubuntu e Debian- sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
- sudo update-ca-certificates
Per importare il certificato di CA Server su un sistema basato 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/
, quindi esegui update-ca-trust
comando.
- sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
- sudo update-ca-trust
Ora il tuo secondo sistema Linux considererà attendibile qualsiasi certificato firmato dal server CA.
Nota: Se stai utilizzando la tua CA con server web e utilizzi Firefox come browser, dovrai importare il ca.crt
pubblico certificato in Firefox direttamente. Firefox non utilizza l'archivio certificati del sistema operativo locale. Per i dettagli su come aggiungere il certificato della tua CA a Firefox, consulta questo articolo di supporto di Mozilla sulla configurazione delle autorità di certificazione (CA) in Firefox.
Se stai utilizzando la tua CA per l'integrazione con un ambiente Windows o computer desktop, consulta la documentazione su come utilizzare 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 i certificati, puoi fermarti qui. Se desideri saperne di più su come firmare e revocare i certificati, la seguente sezione facoltativa spiegherà ogni processo in dettaglio.
(Facoltativo) — Creazione di richieste di firma di certificati e revoca di certificati
Le seguenti sezioni del tutorial sono facoltative. Se hai completato tutti i passaggi precedenti, hai un'autorità di certificazione completamente configurata e funzionante che puoi utilizzare come prerequisito per altri tutorial. Puoi importare il ca.crt
della tua CA archivia e verifica i certificati nella tua rete che sono stati firmati dalla tua CA.
Se desideri esercitarti e saperne di più su come firmare le richieste di certificato e su come revocare i certificati, queste sezioni facoltative spiegheranno come funzionano entrambi i processi.
(Facoltativo) — Creazione e firma di una richiesta di certificato di pratica
Ora che hai una CA pronta per l'uso, puoi esercitarti a generare una chiave privata e una richiesta di certificato per familiarizzare con il processo di firma e distribuzione.
Una richiesta di firma del certificato (CSR) è composta da tre parti:una chiave pubblica, che identifica le informazioni sul sistema richiedente, e una firma della richiesta stessa, che viene creata utilizzando la chiave privata del richiedente. La chiave privata verrà mantenuta segreta e verrà utilizzata per crittografare le informazioni che chiunque disponga del certificato pubblico firmato potrà quindi decrittografare.
I seguenti passaggi verranno eseguiti sul tuo secondo sistema Ubuntu o Debian o sulla distribuzione derivata da uno di questi. Può essere un altro server remoto o una macchina Linux locale come un laptop o un computer desktop. Da easy-rsa
non è disponibile per impostazione predefinita su tutti i sistemi, utilizzeremo il openssl
strumento per creare una chiave privata e un certificato di pratica.
openssl
di solito è installato per impostazione predefinita sulla maggior parte delle distribuzioni Linux, ma solo per essere certi, esegui quanto segue sul tuo sistema:
- sudo apt update
- sudo apt install openssl
Quando ti viene chiesto di installare openssl
inserisci y
per continuare con i passaggi di installazione. Ora sei pronto per creare una pratica CSR con openssl
.
Il primo passaggio che devi completare per creare una CSR è generare una chiave privata. Per creare una chiave privata usando openssl
, crea un practice-csr
directory e quindi generare una chiave al suo interno. Faremo questa richiesta per un server fittizio chiamato sammy-server
, invece di creare un certificato utilizzato per identificare un utente o un'altra CA.
- mkdir ~/practice-csr
- cd ~/practice-csr
- openssl genrsa -out sammy-server.key
Ora che hai una chiave privata puoi creare una CSR corrispondente, sempre usando il openssl
utilità. Ti verrà chiesto di compilare una serie di campi come Paese, Stato e Città. Puoi inserire un .
se desideri lasciare un campo vuoto, ma tieni presente che se si trattasse di una vera CSR, è meglio utilizzare i valori corretti per la tua posizione e organizzazione:
- openssl req -new -key sammy-server.key -out sammy-server.req
Output. . .
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:New York
Locality Name (eg, city) [Default City]:New York City
Organization Name (eg, company) [Default Company Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:Community
Common Name (eg, your name or your server's hostname) []:sammy-server
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Se desideri aggiungere automaticamente quei valori come parte di openssl
invocazione invece che tramite il prompt interattivo, puoi passare il -subj
argomento a OpenSSL. Assicurati di modificare i valori evidenziati in modo che corrispondano alla posizione del tuo studio, 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, puoi leggere un file di richiesta con openssl
ed esamina i campi all'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 sei soddisfatto dell'oggetto della tua richiesta di certificato di pratica, copia il sammy-server.req
file sul server CA utilizzando scp
:
- scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req
In questo passaggio hai generato una richiesta di firma del certificato per un server fittizio chiamato sammy-server
. In uno scenario reale, la richiesta potrebbe provenire da qualcosa come un server Web di staging o sviluppo che necessita di un certificato TLS per il test; oppure potrebbe provenire da un server OpenVPN che richiede un certificato in modo che gli utenti possano connettersi a una VPN. Nel passaggio successivo, procederemo alla firma della richiesta di firma del certificato utilizzando la chiave privata di CA Server.
(Facoltativo) — Firma di una CSR
Nel passaggio precedente, hai creato una richiesta di certificato di pratica e una chiave per un server fittizio. L'hai copiato in /tmp
directory sul tuo server CA, emulando il processo che useresti se avessi client o server reali che inviano richieste CSR che devono essere firmate.
Continuando con lo scenario fittizio, ora il server CA deve importare il certificato dello studio e firmarlo. Una volta che una richiesta di certificato è stata convalidata dalla CA e ritrasmessa a un server, anche i client che si fidano dell'Autorità di certificazione potranno considerare attendibile il certificato appena emesso.
Dal momento che lavoreremo all'interno della PKI della CA in cui easy-rsa
è disponibile, i passaggi per la firma utilizzeranno il easy-rsa
utility per semplificare le cose, invece di usare openssl
direttamente come abbiamo fatto nell'esempio precedente.
Il primo passo per firmare la CSR fittizia è importare la richiesta di certificato utilizzando easy-rsa
sceneggiatura:
- 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-server
You may now use this name to perform signing operations on this request.
Ora puoi firmare la richiesta eseguendo easyrsa
script con sign-req
opzione, seguita dal tipo di richiesta e dal nome comune incluso nella CSR. Il tipo di richiesta può essere uno di client
, server
o ca
. Poiché ci stiamo esercitando con un certificato per un server fittizio, assicurati di utilizzare il server
tipo di richiesta:
- ./easyrsa sign-req server sammy-server
Nell'output, ti verrà chiesto di verificare che la richiesta provenga da una fonte attendibile. Digita yes
quindi premere ENTER
per confermarlo:
OutputYou are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 825 days:
subject=
countryName = US
stateOrProvinceName = New York
localityName = New York City
organizationName = DigitalOcean
organizationalUnitName = Community
commonName = sammy-server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
. . .
Se hai crittografato la tua chiave CA, a questo punto ti verrà richiesta la password.
Riceverai un output come il seguente:
OutputCheck that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :ASN.1 12:'New York'
localityName :ASN.1 12:'New York City'
organizationName :ASN.1 12:'DigitalOcean'
organizationalUnitName:ASN.1 12:'Community'
commonName :ASN.1 12:'sammy-server'
Certificate is to be certified until Jul 21 13:59:08 2024 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt
Una volta completati questi passaggi, hai firmato il sammy-server.req
CSR utilizzando la chiave privata di CA Server in /home/sammy/easy-rsa/pki/private/ca.key
. Il risultato sammy-server.crt
contiene la chiave di crittografia pubblica del server dello studio, nonché una nuova firma dal server CA. Il punto della firma è dire a chiunque si fidi della CA che può anche fidarsi del sammy-server
certificato.
Se questa richiesta riguardasse un server reale come un server Web o un server VPN, l'ultimo passaggio sul server CA sarebbe la distribuzione del nuovo sammy-server.crt
e ca.crt
file dal server CA al server remoto che ha effettuato 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, sarai in grado di utilizzare il certificato emesso 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.
(Facoltativo) — Revoca di un certificato
Occasionalmente, potrebbe essere necessario revocare un certificato per impedirne l'utilizzo da parte di un utente o di un server. Forse il laptop di qualcuno è stato rubato, un server web è stato compromesso o un dipendente o un appaltatore ha lasciato la tua organizzazione.
Per revocare un certificato, la procedura generale segue questi passaggi:
- Revocare il certificato con il
./easyrsa revoke client_name
comando. - Genera un nuovo CRL con
./easyrsa gen-crl
comando. - Trasferisci il
crl.pem
aggiornato file sul server o sui server che si basano sulla CA e su tali sistemi copiarlo nella directory o nelle directory richieste per i programmi che vi fanno riferimento. - Riavvia tutti i servizi che utilizzano la tua CA e il file CRL.
Puoi utilizzare questa procedura per revocare in qualsiasi momento tutti i certificati che hai emesso in precedenza. Esamineremo ogni passaggio in dettaglio nelle sezioni seguenti, a partire da revoke
comando.
Revocare un certificato
Per revocare un certificato, vai a easy-rsa
directory sul server CA:
- cd ~/easy-rsa
Quindi, esegui easyrsa
script con revoke
opzione, seguito dal nome del cliente che si desidera revocare. Seguendo l'esempio di pratica sopra, il nome comune del certificato è sammy-server
:
- ./easyrsa revoke sammy-server
Questo ti chiederà di confermare la revoca inserendo yes
:
OutputPlease confirm you wish to revoke the certificate with the following subject:
subject=
commonName = sammy-server
Type the word 'yes' to continue, or any other input to abort.
Continue with revocation: yes
. . .
Revoking Certificate 8348B3F146A765581946040D5C4D590A
. . .
Prendere nota del valore evidenziato sul Revoking Certificate
linea. Questo valore è il numero di serie univoco del certificato che viene revocato. Se desideri esaminare l'elenco delle revoche nell'ultimo passaggio di questa sezione per verificare che il certificato sia in esso contenuto, avrai bisogno di questo valore.
Dopo aver confermato l'azione, la CA revocherà il certificato. Tuttavia, i sistemi remoti che si basano sulla CA non hanno modo di verificare se i certificati sono stati revocati. Utenti e server potranno comunque utilizzare il certificato fino a quando l'elenco di revoche di certificati (CRL) della CA non sarà distribuito a tutti i sistemi che si basano sulla CA.
Nel passaggio successivo genererai un CRL o aggiornerai un crl.pem
esistente file.
Generazione di un elenco di revoche di certificati
Ora che hai revocato un certificato, è importante aggiornare l'elenco dei certificati revocati sul tuo server CA. Una volta che hai un elenco di revoche aggiornato, sarai in grado di dire quali utenti e sistemi hanno certificati validi nella tua CA.
Per generare un CRL, esegui easy-rsa
comando con gen-crl
opzione mentre sei ancora all'interno di ~/easy-rsa
directory:
- ./easyrsa gen-crl
Se hai utilizzato una passphrase durante la creazione del tuo ca.key
file, ti verrà chiesto di inserirlo. Il gen-crl
il comando genererà un file chiamato crl.pem
, contenente l'elenco aggiornato dei certificati revocati per tale CA.
Successivamente dovrai trasferire il crl.pem
aggiornato file a tutti i server e client che si basano su questa CA ogni volta che esegui gen-crl
comando. In caso contrario, client e sistemi potranno comunque accedere ai servizi e ai sistemi che utilizzano la tua CA, poiché tali servizi devono essere a conoscenza dello stato revocato del certificato.
Trasferimento di un elenco di revoche di certificati
Ora che hai generato un CRL sul tuo server CA, devi trasferirlo su sistemi remoti che si basano sulla tua CA. Per trasferire questo file sui tuoi server, puoi utilizzare il scp
comando.
Nota: Questo tutorial spiega come generare e distribuire manualmente un CRL. Sebbene esistano metodi più solidi e automatizzati per distribuire e controllare gli elenchi di revoche come OCSP-Stapling, la configurazione di tali metodi va oltre lo scopo di questo articolo.
Assicurati di aver effettuato l'accesso al tuo server CA come utente non root ed esegui quanto segue, sostituendo il tuo IP del 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 si trova sul sistema remoto, l'ultimo passaggio consiste nell'aggiornare eventuali servizi con la nuova copia dell'elenco delle revoche.
Aggiornamento dei servizi che supportano un CRL
Elenco dei passaggi da utilizzare per aggiornare i servizi che utilizzano crl.pem
il file va oltre lo scopo di questo tutorial. In generale dovrai copiare il crl.pem
file nella posizione prevista dal servizio, quindi riavvialo utilizzando systemctl
.
Dopo aver aggiornato i tuoi servizi con il nuovo crl.pem
file, i tuoi servizi saranno in grado di rifiutare le connessioni da client o server che utilizzano un certificato revocato.
Esame e verifica del contenuto di un CRL
Se desideri esaminare un file CRL, ad esempio per confermare un elenco di certificati revocati, utilizza il seguente openssl
comando dal tuo easy-rsa
directory sul server CA:
- cd ~/easy-rsa
- openssl crl -in pki/crl.pem -noout -text
Puoi anche eseguire questo comando su qualsiasi server o sistema che abbia il openssl
strumento installato con una copia del crl.pem
file. Ad esempio, se hai trasferito il crl.pem
file sul tuo secondo sistema e vuoi verificare che il sammy-server
certificato è stato revocato, puoi utilizzare un openssl
comando come il seguente, sostituendo il numero di serie che hai annotato in precedenza quando hai revocato il certificato al posto di quello qui evidenziato:
- openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output Serial Number: 8348B3F146A765581946040D5C4D590A
Revocation Date: Apr 18 14:00:37 2022 GMT
Nota come il grep
Il comando viene utilizzato per verificare il numero di serie univoco annotato nella fase di revoca. Ora puoi verificare il contenuto del tuo Elenco di revoca dei certificati su qualsiasi sistema che si basa su di esso per limitare l'accesso a utenti e servizi.
Conclusione
In questo tutorial hai creato un'autorità di certificazione privata utilizzando il pacchetto Easy-RSA su un server Ubuntu 22.04 autonomo. Hai esplorato come funziona il modello di fiducia tra le parti che fanno affidamento sulla CA. Hai anche creato e firmato una richiesta di firma del certificato (CSR) per un server di pratica e poi hai imparato come revocare un certificato. Infine, hai imparato a generare e distribuire un Certificate Revocation List (CRL) per qualsiasi sistema che si basa sulla tua CA per garantire che gli utenti o i server che non dovrebbero accedere ai servizi siano impediti di farlo.
Now you can issue certificates for users and use them with services like OpenVPN. You can also use your CA to configure development and staging web servers with certificates to secure your non-production environments. Using a CA with TLS certificates during development can help ensure that your code and environments match your production environment as closely as possible.
If you would like to learn more about how to use OpenSSL, our OpenSSL Essentials:Working with SSL Certificates, Private Keys and CSRs tutorial has lots of additional information to help you become more familiar with OpenSSL fundamentals.