L'autorità di certificazione (CA) è un'entità responsabile dell'emissione di certificati digitali per rendere sicura la comunicazione. Agisce come una terza parte fidata per il proprietario del certificato e la parte che fa affidamento sul certificato.
L'entità dell'autorità di certificazione può essere pubblica o privata. Le CA pubbliche vengono comunemente utilizzate per verificare l'identità dei siti Web e le CA private vengono utilizzate per generare certificati per una VPN da client a sito, utenti, server interni o singoli programmi e servizi all'interno della tua infrastruttura come server Web locali.
In questo tutorial impariamo come creare un'autorità di certificazione privata (CA) su Ubuntu 20.04 . Qui stiamo usando easy-rsa Utilità CLI per creare e gestire CA Server.
Prerequisiti
- Un nodo con Ubuntu 20.04 per ospitare CA Server
- Un utente con privilegio sudo
Fase 1:aggiorna il tuo sistema
Innanzitutto, aggiorna il tuo sistema Ubuntu, esegui il seguente comando:
apt update
Puoi saltare questo passaggio se stai installando easy-rsa dal repository ufficiale.
Fase 2:installa Easy-RSA sul server CA
Easy-RSA è uno strumento a riga di comando che facilita notevolmente la creazione di un'autorità di certificazione (CA) e la gestione dei certificati. Genera una chiave privata e un certificato radice pubblico.
Easy-RSA è disponibile nel repository apt predefinito. Per installare l'ultima versione dal repository GitHub di easy-rsa ufficiale.
Scarica lo strumento di gestione PKI Easy-RSA da Github:
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Qui ho scaricato la versione 3.0.8 . Ora spostiamo il file in /opt
cartella
sudo mv EasyRSA-3.0.8.tgz /opt
Ora cambia directory in /opt:
cd /opt
Esegui il comando seguente per decomprimere il file .tgz:
sudo tar xvf EasyRSA-3.0.8.tgz
Rinominare la directory usando il comando mv:
sudo mv EasyRSA-3.0.8 easy-rsa
Ora rendi l'utente non root il proprietario della directory:
sudo chown -R franck:franck easy-rsa/
Limita l'accesso alla directory PKI, solo per il proprietario:
sudo chmod 700 easy-rsa
Passaggio 3:configurazione del server CA
Qui imposteremo la directory dell'infrastruttura a chiave pubblica e creeremo un certificato pubblico/privato per il server CA.
Ora cambia la directory in easy-rsa che è stata creata in precedenza:
cd easy-rsa
Creeremo un vars
file che verrà utilizzato per memorizzare le informazioni sull'organizzazione
$ cp vars.example vars
Ora aggiungi le informazioni sull'organizzazione alla fine del file
$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Centre"
set_var EASYRSA_REQ_CITY "Yaounde"
set_var EASYRSA_REQ_ORG "LINUXSHARE"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Ora inizializzeremo la directory dell'infrastruttura a chiave pubblica:
$ ./easyrsa init-pki
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /opt/easy-rsa/pki
Per generare il pubblico root e coppia di chiavi private per il server CA, digitare:
$ ./easyrsa build-ca
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
read EC key
writing EC key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
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:
/opt/easy-rsa/pki/ca.crt
Ti verrà chiesto di inserire una passphrase per la coppia di chiavi ogni volta che dovrai firmare o revocare un certificato. Ti verrà anche chiesto il nome comune (CN) per la tua CA, puoi utilizzare quello predefinito se lo desideri.
L'operazione creerà due file principali:
- Il certificato pubblico file
ca.crt
file che i server ei client utilizzeranno per verificare che si trovino sullo stesso perimetro di attendibilità - La chiave privata file
ca.key
nelpki/private
directory utilizzata dalla CA per firmare i certificati dei server e dei client
Fase 4:importa il certificato pubblico della CA
Ora che abbiamo generato il certificato pubblico, dobbiamo importarlo su un altro server.
Accedi al server su cui desideri importare il certificato, quindi esegui una copia remota di ca.crt
file dal server CA.
scp [email protected]:/opt/easy-rsa/pki/ca.crt
The authenticity of host 'X.Y.Z.T (X.Y.Z.T)' can't be established.
ECDSA key fingerprint is SHA256:ffUgP5/d0Z3miOKqxBVoF9JbFvIZFs/gxr7ESBZ0kmQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.177.204.145' (ECDSA) to the list of known hosts.
[email protected]'s password:
ca.crt
100% 749 2.4KB/s 00:00
Sposta il file del certificato in /usr/local/share/ca-certificates/
directory:
sudo mv ca.crt /usr/local/share/ca-certificates/
Ora importa il certificato del CA Server usando il seguente comando:
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs…
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…
done.
Con ciò, il tuo server ora si fiderà dei certificati che sono stati firmati dal tuo server CA.
Fase 5:crea la richiesta di certificato del server e la chiave privata
Possiamo creare alcune richieste di firma del certificato (CSR) su un server diverso per fare in modo che la nostra CA firmi tali richieste.
Useremo OpenSSL per creare file CSR. Se OpenSSL non è installato, utilizza il seguente comando per installarlo:
sudo apt install openssl
Crea una directory denominata server1-csr per conservare la CSR e la chiave privata
mkdir server1-csr
Passa alla directory server1-csr
cd server1-csr
Ora genera la chiave privata usando OpenSSL:
openssl genrsa -out server1.key
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
..................................................+++++
e is 65537 (0x010001)
Puoi generare la CSR corrispondente utilizzando la chiave generata:
$ openssl req -new -key server1.key -out server1.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CM
State or Province Name (full name) [Some-State]:CE
Locality Name (eg, city) []:Yaounde
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LinuxShare
Organizational Unit Name (eg, section) []:Tech-B
Common Name (e.g. server FQDN or YOUR name) []:server1
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Ora devi copiare il file CSR sul server CA:
$ scp server1.req scp [email protected]:/tmp/server1.req
Fase 6:firma la CSR del server sul server CA
La CSR generata deve essere firmata dal server CA. Per prima cosa, spostati nella directory easy-rsa per importare la richiesta di firma del certificato del server.
./easyrsa import-req /opt/sign-cert/server1.req server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: server1
You may now use this name to perform signing operations on this request.
Ora firma la CSR usando il seguente comando:
./easyrsa sign-req server server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
You 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 = CM
stateOrProvinceName = CE
localityName = Yaounde
organizationName = LinuxShare
organizationalUnitName = Tech-B
commonName = server1
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/easy-rsa/pki/easy-rsa-161486.BI2HwH/tmp.lIqZoF
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CM'
stateOrProvinceName :ASN.1 12:'CE'
localityName :ASN.1 12:'Yaounde'
organizationName :ASN.1 12:'LinuxShare'
organizationalUnitName:ASN.1 12:'Tech-B'
commonName :ASN.1 12:'server1'
Certificate is to be certified until Jan 5 16:57:26 2024 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /opt/easy-rsa/pki/issued/server1.crt
Dall'output è possibile visualizzare il certificato emesso nella directory /opt/easy-rsa/pki/issued/. Puoi anche verificare il certificato elencandolo:
$ ls -l /opt/easy-rsa/pki/issued
Uscita:
total 4
-rw------- 1 franck franck 3996 Oct 2 16:57 server1.crt
Con tutti questi passaggi, sei in grado di gestire da solo i tuoi certificati per i tuoi server interni. Con il tuo server CA puoi firmare i certificati per i tuoi server web o per un tunnel VPN, ad esempio con OpenVPN.
Nota:per motivi di sicurezza, si consiglia di non eseguire altri servizi su un server CA. Dovrebbe essere utilizzato solo per importare, firmare e revocare le richieste di certificati come server autonomo.
Conclusione
In questo tutorial, abbiamo imparato come creare un'autorità di certificazione privata (CA) su Ubuntu 20.04. Grazie per la lettura, fornisci i tuoi commenti e suggerimenti nella sezione commenti.