Les communications non chiffrées entre les différents services sont à bannir même dans le cas où ils sont dans le m ême (sous-)réseau.
Dans cet article, nous abordons une introduction à la génération ainsi qu’à la gestion des certificats avec l’outil open-source easy-rsa
.
easy-rsa rend la gestion des certificats si “easy” que vous n’avez plus d’excuse pour encore transmettre des données en clair ou utiliser le même certificat pour plusieurs services.
L’outil vous permet de :
easy-rsa
est disponible sur les dépôts de paquets officiels d’une majorité de distribution Linux. Il peut être installé en utilisant le gestionnaire de paquet de votre distribution Linux (dnf, apt, pacman, etc.) ou macOS (HomeBrew).
sudo apt install easy-rsa
Les fichiers de configuration et le script de easy-rsa se trouve dans le répertoire /usr/share/easy-rsa
dans un système Linux, /usr/local/etc/easy-rsa
sur les macOS Intel et /opt/homebrew/etc/easy-rsa
sur les macOS M1. Ce dernier contient les fichiers :
easyrsa
: le script.openssl-easyrsa.cnf
: le fichier de configuration d’openssl à utiliser. Ce fichier n’a pas besoin d’être modifié.vars.example
: le fichier qui contient les paramètres par défaut qui seront utilisés par easyrsa
s’ils ne sont pas spécifiés.Pour chaque PKI (infrastructure à clé publique), un fichier peut être créé afin de faciliter la gestion des certificats. Autrement dit, une autorité de certification (PKI) par composante ou service (PostgreSQL, OpenVPN, Nginx mTLS, etc.).
La variable EASYRSA_PKI
définit le chemin où la PKI va être stockée. Dans un système Linux, ce repértoire est “/etc/pki”. Si le répertoire n’existe pas, il sera créé avec la commande init-pki
.
set_var EASYRSA_PKI "/etc/pki/PostgreSQL"
set_var EASYRSA_REQ_COUNTRY "CH" set_var EASYRSA_REQ_PROVINCE "Vaud" set_var EASYRSA_REQ_CITY "Vevey" set_var EASYRSA_REQ_ORG "ICTrust" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "PKI"
# Les algorithmes de chiffrement selon les besoins et préférences sont : # * rsa # * ec # * ed set_var EASYRSA_ALGO ec
Selon l’algorithme choisi, la taille de la clé peut être spécifiée. Par défaut, la taille de la clé RSA est de 2048 bits:
set_var EASYRSA_KEY_SIZE 2048Si les algorithmes
ec
oued
sont utilisés, la courbe secp384r1 est utilisée par défaut :set_var EASYRSA_KEY_SIZE secp384r1
set_var EASYRSA_CA_EXPIRE 3650
La durée de 10 ans est utilisée par défaut afin d’éviter de renouveler les certificats racines régulièrement
set_var EASYRSA_CERT_EXPIRE 365
Par défaut, le nombre de jours d’expiration est de 825 jours
L’initialisation de la PKI se fait avec la commande easyrsa init-pki
en utilisant le paramètre --vars
qui spécifie le fichier contenant les variables à utiliser (dans l’exemple ci-dessous /usr/share/easy-rsa/vars.mTLS
).
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easy-rsa/vars.mTLS init-pki
La commande va créer les répertoires et les fichiers nécessaires à de la PKI dans le répertoire spécifié par la variable EASYRSA_PKI
.
Le certificat racine (“root”) peut être généré avec la commande :
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS build-ca
La commande va demander à entrer un mot de passe qui va être utilisé pour chiffrer la clé privée de la CA. Le résultat est la génération du certificat dans le répertoire spécifié dans le fichier /usr/share/easyrsa/vars.mTLS
.
Pour visualiser le certificat créé, la commande ci-après peut être utilisée:
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS show-ca
La génération d’un CSR peut se faire, du côté client, en utilisant l’outil openssl
, le trousseau de macOS, le KeyStore Java ou autre.
L’algorithme de la clé privée utilisé lors la génération de la CSR peut différer de celui de la CA.
openssl
:openssl req -newkey rsa:2048 -keyout master_server.key -out master_server.csr
easyrsa
:sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS import-req /tmp/master_server.csr master_server_name
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS sign-req server master_server_name
La commande demandera d’entrer le mot de passe de la clé privée du certificat racine.
Où :
master_server_name
est le nom spécifié lors de l’importation du CSRserver
est le type du certificat à générer. Cela peut être client
, server
ou serverClient
, email
, code-signing
, ca
, etc…La commande génère le certificat dans le répertoire ‘issued’ qui se trouve dans le répertoire des variables EASYRSA_PKI
.
Dans le cas d’une compromission ou non utilisation d’un certificat, ce dernier doit être révoqué afin que son utilisation ne soit plus possible. Pour ce faire, la commande ci-dessous peut-être utilisée:
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS revoke master_server_name cessationOfOperation
Le dernier paramètre, non obligatoire, est la raison de révocation et qui peut être une des valeurs suivantes : unspecified
, keyCompromise
, CACompromise
, affiliationChanged
, superseded
, cessationOfOperation
ou certificateHold
.
Finalement, la CRL doit être mise à jour afin d’ajouter le certificat révoqué:
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS gen-crl
Le fichier index.txt
dans le répertoire de la PKI contient la liste des certificats valides, révoqués et expirés. Les certificats expirés commencent par la lettre ‘R’ (Revoked).