Gestion des certificats
Les certificats permettent d'avoir une connexion sécurisées, chiffrer entre le serveur et le client. Il est indispensable si l'on met le serveur en production pour protéger les données. Il y a existe plusieurs façon de générer un certificat que nous allons voir ici.
Activation de l'extension ssl
Avant de faire la requête du certificat, il faut activer le module ssl pour apache2
sudo a2enmod ssl
sudo systemctl restart apache2
Création d'un certificat auto-signé
Un certificat auto-signé à l'avantage de ne pas avoir besoin de faire une requête à une autorité de certification. Cependant, par défaut les navigateurs relèveront un risque de sécurité. Très utiles pour des services internes qui restes internes, mais pour levé l'alerte, il faut rajouter aux navigateurs le certifictas de l'autorité.
Pour créer un certificat autosigné, il faut utilisé la commande openssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Explication commande
- openssl : Il s’agit de l’outil en ligne de commande permettant de créer et de gérer les certificats, les clés et autres fichiers OpenSSL. req -x509 : Cela spécifie que nous voulons utiliser la gestion des demandes de signature de certificat (CSR) en utilisant le protocole X.509. X.509 est une norme d’infrastructure à clé publique à laquelle TLS adhère pour la gestion des clés et des certificats.
- nodes : Cela indique à OpenSSL de sauter l’option de sécurisation de notre certificat avec une phrase secrète. Nous avons besoin qu’Apache puisse lire le fichier sans intervention de l’utilisateur lors du démarrage du serveur. Une phrase secrète empêcherait cela de se produire, car nous devrions la saisir après chaque redémarrage.
- days 365 : Cette option définit la durée pendant laquelle le certificat sera considéré comme valide. Nous l’avons réglé ici pour un an. De nombreux navigateurs modernes rejettent tout certificat valide depuis plus d’un an.
- newkey rsa:2048 : Cela spécifie que nous voulons générer simultanément un nouveau certificat et une nouvelle clé. Nous n’avons pas créé la clé requise pour signer le certificat lors d’une étape précèdente, donc nous devons la créer en même temps que le certificat. La partie rsa:2048 indique de créer une clé RSA de 2048 bits.
- keyout : Cette ligne indique à OpenSSL où placer le fichier de clé privée générée que nous sommes en train de créer.
- out : Cela indique à OpenSSL où placer le certificat que nous sommes en train de créer.
Création d'un certificat let's Encrypt
Let's encrypt est une autorité de certification qui permet d'avoir des certificats ssl gratuitement. Ils sont valables 4 mois et peuvent être automatiquement renouvellé.
Dans un premier temps, il faut installer le robot certbot qui va gérer la requête et le renouvellement
sudo apt update
sudo apt install certbot python3-certbot-apache
une fois que tout est installé, on peut faire la requête ssl :
certbot --apache -d <domaine>
Modification du VirtualHost
Maintenant que le certificats du domaine est présent sur notre machine, nous allons modifié le virtual host pour qu'il prennent en compte notre certificat
<VirtualHost *:443>
ServerAdmin admin@exemple.com
ServerName 127.0.0.1
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile <file.crt>
SSLCertificateKeyFile <file.key>
</VirtualHost>
No Comments