AccueilAuteursContact

Chiffrement easy(RSA) 🔐

Par Amine T.
Publié dans Hardening
20 novembre 2022
Lecture: 3 min
Chiffrement easy(RSA) 🔐

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 :

  • Créer une autorité de certification racine.
  • Générer et signer des certificats (l’autorité de certification intermédiaire incluse)
  • Générer la liste des certificats révoqués.

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 

Configuration

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.).

Emplacement de la PKI

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" 

Les valeurs par défaut pour les champs des certificats sont :

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"

Algorithmes de chiffrement

# 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 2048

Si les algorithmes ec ou ed sont utilisés, la courbe secp384r1 est utilisée par défaut :

set_var EASYRSA_KEY_SIZE secp384r1

Expiration des certificats

  • Le nombre de jours de validité du certificat racine qui s’applique aussi au certificat intermédiaire est spécifié comme suit:
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

  • Le nombre de jours de validité des certificats générées peut être spécifié comme suit:
set_var EASYRSA_CERT_EXPIRE 365

Par défaut, le nombre de jours d’expiration est de 825 jours

Initialisation de la PKI

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.

Création du certificat racine

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

Génération de la “Certificat Signing Request” (CSR)

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.

  • Génération du CSR a l’aide de la commande openssl :
openssl req -newkey rsa:2048 -keyout master_server.key -out master_server.csr

Génération des certificats

  • Importation du CSR avec easyrsa:
sudo /usr/share/easy-rsa/easyrsa --vars=/usr/share/easyrsa/vars.mTLS import-req /tmp/master_server.csr master_server_name
  • Génération du certificat
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 CSR
  • server 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.

Révocation de certificat

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).


Tags

#gestion#certificats#easyrsa#chiffrement
Article précédant
CIS macOS
Amine T.

Amine T.

Fondateur d'ICTrust

Tables

1
Configuration
2
Initialisation de la PKI
3
Création du certificat racine
4
Génération de la "Certificat Signing Request" (CSR)
5
Génération des certificats
6
Révocation de certificat

Articles similaires

Gestion des administrateurs
18 juillet 2021
2 min

Liens

Nous contacterÀ propos

Liens externes