L’autorité de certification (CA) est une entité chargée de délivrer des certificats numériques pour sécuriser la communication. Il agit en tant que tiers de confiance pour le propriétaire du certificat et la partie s’appuyant sur le certificat.
L’entité d’autorité de certification peut être publique ou privée. Les autorités de certification publiques sont couramment utilisées pour vérifier l’identité des sites Web et les autorités de certification privées sont utilisées pour générer des certificats pour un VPN client à site, des utilisateurs, des serveurs internes ou des programmes et services individuels au sein de votre infrastructure, tels que des serveurs Web locaux.
Dans ce tutoriel, nous apprenons à créer un autorité de certification privée (CA) au Ubuntu 20.04. Ici, nous utilisons facile-rsa Utilitaire CLI pour créer et gérer le serveur CA.
Conditions préalables
- Un nœud avec Ubuntu 20.04 pour héberger le serveur CA
- Un utilisateur avec sudo privilège
Étape 1 : Mettez à jour votre système
Tout d’abord, mettez à jour votre système Ubuntu, exécutez la commande suivante :
apt update
Vous pouvez ignorer cette étape si vous installez easy-rsa à partir du référentiel officiel.
Étape 2 : Installer Easy-RSA sur le serveur CA
Easy-RSA est un outil en ligne de commande qui facilite considérablement la mise en place d’une autorité de certification (CA) et la gestion des certificats. Il génère une clé privée et un certificat racine public.
Easy-RSA est disponible dans le référentiel apt par défaut. Pour avoir la dernière version installée à partir de l’officiel Easy-rsa GitHub dépôt.
Téléchargez l’outil de gestion Easy-RSA PKI depuis Github :
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Ici ont téléchargé la version 3.0.8. Déplaçons maintenant le fichier dans le /opt
dossier
sudo mv EasyRSA-3.0.8.tgz /opt
Maintenant, changez de répertoire en /opt :
cd /opt
Exécutez la commande suivante pour décompresser le fichier .tgz :
sudo tar xvf EasyRSA-3.0.8.tgz
Renommez le répertoire à l’aide de la commande mv :
sudo mv EasyRSA-3.0.8 easy-rsa
Maintenant, faites de l’utilisateur non root le propriétaire du répertoire :
sudo chown -R franck:franck easy-rsa/
Restreindre l’accès au répertoire PKI, uniquement pour le propriétaire :
sudo chmod 700 easy-rsa
Étape 3 : configuration du serveur CA
Ici, nous allons configurer le répertoire d’infrastructure de clé publique et créer un certificat public/privé pour le serveur CA.
Changez maintenant le répertoire en easy-rsa qui a été créé précédemment :
cd easy-rsa
Nous allons créer un vars
fichier qui sera utilisé pour stocker les informations de l’organisation
$ cp vars.example vars
Ajoutez maintenant les informations d’organisation à la fin du fichier
$ 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"
Nous allons maintenant initialiser le répertoire Public Key Infrastructure :
$ ./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
Pour générer le racine publique et paire de clés privées pour le serveur CA, tapez :
$ ./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
Il vous sera demandé de saisir une phrase secrète pour la paire de clés chaque fois que vous devrez signer ou révoquer un certificat. Il vous sera également demandé le Common Name (CN) de votre CA, vous pouvez utiliser celui par défaut si vous le souhaitez.
L’opération va créer deux fichiers principaux :
- le certificat public déposer
ca.crt
fichier que les serveurs et les clients utiliseront pour vérifier qu’ils sont sur le même périmètre de confiance - le Clé privée déposer
ca.key
dans lepki/private
annuaire que l’AC utilise pour signer les certificats des serveurs et des clients
Étape 4 : importer le certificat public de l’autorité de certification
Maintenant que nous avons généré le certificat public, nous devons l’importer sur un autre serveur.
Connectez-vous au serveur sur lequel vous souhaitez importer le certificat, puis effectuez une copie à distance de ca.crt
fichier du serveur 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.
100% 749 2,4 Ko/s 00:00
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
Déplacez le fichier de certificat vers le /usr/local/share/ca-certificates/
annuaire:
sudo mv ca.crt /usr/local/share/ca-certificates/
Importez maintenant le certificat du serveur CA à l’aide de la commande suivante :
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs…
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…
done.
Avec cela, votre serveur fera désormais confiance aux certificats qui ont été signés par votre serveur CA.
Étape 5 : Créez la demande de certificat de serveur et la clé privée
Nous pouvons créer des demandes de signature de certificat (CSR) sur un serveur différent pour que notre autorité de certification signe ces demandes.
Nous utiliserons OpenSSL pour créer le fichier CSR. Si OpenSSL n’est pas installé, utilisez la commande suivante pour l’installer :
sudo apt install openssl
Créez un répertoire nommé server1-csr pour conserver la CSR et la clé privée
mkdir server1-csr
Passer au répertoire server1-csr
cd server1-csr
Générez maintenant la clé privée à l’aide d’OpenSSL :
openssl genrsa -out server1.key
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
..................................................+++++
e is 65537 (0x010001)
Vous pouvez générer le CSR correspondant à l’aide de la clé générée :
$ 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 []:
Vous devez maintenant copier le fichier CSR sur le serveur CA :
$ scp server1.req scp [email protected]:/tmp/server1.req
Étape 6 : Signez le CSR du serveur sur le serveur CA
Le CSR généré doit être signé par le serveur CA. Pour cela, accédez d’abord au répertoire easy-rsa pour importer la demande de signature de certificat du serveur.
./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.
Signez maintenant le CSR à l’aide de la commande suivante :
./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
À partir de la sortie, vous pouvez voir le certificat émis sous le répertoire /opt/easy-rsa/pki/issued/. Vous pouvez également vérifier le certificat en le répertoriant :
$ ls -l /opt/easy-rsa/pki/issued
Sortir:
total 4
-rw------- 1 franck franck 3996 Oct 2 16:57 server1.crt
Avec toutes ces étapes, vous êtes capable de gérer vous-même vos certificats pour vos serveurs internes. Avec votre serveur CA, vous pouvez signer les certificats de vos serveurs web ou d’un tunnel VPN pour example avec OpenVPN.
Remarque : pour des raisons de sécurité, il est recommandé de ne pas exécuter d’autres services sur un serveur CA. Il ne doit être utilisé que pour importer, signer et révoquer les demandes de certificat en tant que serveur autonome.
Conclusion
Dans ce didacticiel, nous avons appris à créer une autorité de certification privée (CA) sur Ubuntu 20.04. Merci d’avoir lu, s’il vous plaît fournir vos commentaires et suggestions dans la section des commentaires.