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.gitMise 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-ca2) 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 13) Initialisation du PKI
./easyrsa init-pki4) 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, keyCertSignMise en place du certificat intermédiaire
- Refaites les étapes de 1 à 3 dans un nouveau dossier tel que
intermediate-ca, puis actualisez le fichiervars:
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 11) Initialiser et créer une requête
./easyrsa init-pki
./easyrsa gen-req intermediate-caCopier 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-ca2) 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.keySi 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-trustBonne 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