Mise en place d'un authorité de certification avec EasyRSA

Par les temps qui courent, chiffrer son trafic réseau est devenu indispensable.
Dans cet article, nous allons voir comment mettre en place et gérer une autorité de certification PKI grâce à EasyRSA 

Tout d'abord, nous allons Télécharger easyRSA

cd /tmp
git clone https://github.com/OpenVPN/easy-rsa.git

 

Mise en place du Certificat racine 

Le certificat racine doit être généré sur une machine sans accès réseau

1) Copie du dossier easyrsa3

cp -r /tmp/easy-rsa/easyrsa3/ /root/root-ca
cd /root/root-ca

2) Création du fichier vars à la racine du dossier root-ca

set_var     EASYRSA_REQ_COUNTRY        "FR"
set_var     EASYRSA_REQ_PROVINCE       "NPDC"
set_var     EASYRSA_REQ_CITY           "Lille"
set_var     EASYRSA_REQ_ORG            "Drupalista Root CA"
set_var     EASYRSA_REQ_CN             "pki-root-ca"
set_var     EASYRSA_REQ_EMAIL          "missd@drupalista.dev"
set_var     EASYRSA_REQ_OU             "Drupalista"
set_var     EASYRSA_ALGO               "ec"
set_var     EASYRSA_DIGEST             "sha512"
set_var     EASYRSA_CURVE              "secp384r1"
set_var     EASYRSA_DISABLE_INLINE  	1
set_var		EASYRSA_TEXT_OFF			1

3) Initialisation du PKI

./easyrsa init-pki

4) Génération du certificat racine

./easyrsa build-ca
Using Easy-RSA 'vars' configuration:
* /root/root-ca/vars
Enter New CA Key Passphrase:
Confirm New CA Key Passphrase: 
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) [pki.drupalista.lan]:
Notice
------
CA creation complete. Your new CA certificate is at:
* /root/root-ca/pki/ca.crt
Build-ca completed successfully.
  • Créer un type x509 personnalisé pour une autorité de certification intermédiaire

Créer le fichier x509-types/caRestricted

basicConstraints = critical, CA:TRUE, pathlen:0
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
keyUsage = critical, cRLSign, keyCertSign

Mise en place du certificat intermédiaire

  • Refaites les étapes de 1 à 3 dans un nouveau dossier tel que intermediate-ca, puis actualisez le fichier vars :
set_var         EASYRSA_REQ_COUNTRY     "FR"
set_var         EASYRSA_REQ_PROVINCE    "NPDC"
set_var         EASYRSA_REQ_CITY        "Lille"
set_var         EASYRSA_REQ_ORG         "Drupalista EC CA"
set_var         EASYRSA_REQ_EMAIL       "missd@drupalista.dev"
set_var         EASYRSA_REQ_OU          "Drupalista Intermediate"
set_var         EASYRSA_ALGO            "ec"
set_var         EASYRSA_DIGEST          "sha512"
set_var         EASYRSA_CURVE           "secp384r1"
set_var         EASYRSA_DISABLE_INLINE  1
set_var         EASYRSA_TEXT_OFF        1
set_var         EASYRSA_AUTO_SAN        1

1)  Initialiser et créer une requête 

./easyrsa init-pki
./easyrsa gen-req intermediate-ca

Copier le fichier intermediate-ca.req sur le serveur Root CA

2) Sur le serveur Root CA

./easyrsa import-req /path/to/intermediate-ca.req intermediate-ca
EASYRSA_NO_SAN=1 ./easyrsa sign-req caRestricted intermediate-ca

2) Sur le serveur Intermediate  CA

cp /path/to/intermediate-ca.crt pki/ca.crt
cp /path/to/root-ca/pki/ca.crt pki/root-ca.crt
cp /path/to/root-ca/pki/index.txt pki/index.txt
cat pki/ca.crt pki/root-ca.crt > pki/ca-chain.crt
mv pki/private/intermediate-ca.key pki/private/ca.key

Si le système signale des fichiers/répertoires manquants, créez-les :

touch pki/serial
mkdir pki/certs_by_serial


Il ne vous reste plis qu'à importer la chaine de certificat sur vos machines

cp /path/to/intermediate-ca/pki/ca-chain.crt /etc/pki/ca-trust/source/anchors/ca-chain.crt
update-ca-trust

Bonne nouvelle, vous disposez désormais d'une autorité de certification intermédiaire fonctionnelle.

Générer un certificat serveur

Maintenant pour générer un certificat serveur, rien de plus simple

./easyrsa --notext build-server-full portal.drupalista.lan nopass
Using Easy-RSA 'vars' configuration:
* /root/intermediate-ca/vars
-----
Notice
------
Private-Key and Public-Certificate-Request files created.
Your files are:
* req: /root/intermediate-ca/pki/reqs/portal.drupalista.lan.req
* key: /root/intermediate-ca/pki/private/portal.drupalista.lan.key
You are about to sign the following certificate:
 Requested CN:     'portal.drupalista.lan'
 Requested type:   'server'
 Valid for:        '825' days

subject=
   commonName                = portal.drupalista.lan
           X509v3 Subject Alternative Name:
               DNS:portal.drupalista.lan
Type the word 'yes' to continue, or any other input to abort.
 Confirm requested details: yes
Using configuration from /root/intermediate-ca/pki/88a77ef4/temp.02
Enter pass phrase for /root/intermediate-ca/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'portal.drupalista.lan'
Certificate is to be certified until Feb 13 17:22:13 2028 GMT (825 days)
Write out database with 1 new entries
Database updated
Notice
------
Certificate created at:
* /root/intermediate-ca/pki/issued/portal.drupalista.lan.crt

 

Add new comment