Installer un certificat SSL gratuit Let's Encrypt sur Apache 2.4 et Debian 8 en moins de 10 minutes
Let's Encrypt fournit gratuitement des certificat SSL, valide 3 mois qui se renouvellent automatiquement.
Nous allons voir comment installer le certificat via le client certbot recommandé par l'EFF, puis ensuite obtenir le meilleur niveau de sécurité.
Installer le certificat - Debian 8
Etape 1 : Ajouter les dépôts pour Debian 8 (Jessie)
Les paquets pour Debian 8 se trouve dans les backports
Créer un fichier source et renseigner le dépôt :
nano /etc/apt/sources.list.d/backports.list deb http://ftp.us.debian.org/debian/ jessie-backports main
Etape 2 : Installer le client Certbot
aptitude update aptitude install python-certbot-apache -t jessie-backports
Etape 3 : Exécuter le client
certbot --apache
Suivre les indication de l'assistant. Si le vhost (HTTP) Apache est bien configuré, l'assistant va le trouver et s'occuper automatiquement de la configuration.
Vous pouvez choisir entre laisser le site accessible en HTTP et en parallèle HTTPS, ou bien rediriger l'HTTP vers la version HTTPS
Il suffit ensuite de redémarrer apache via "service apache2 restart" pour que le site soit accessible en HTTPS (à condition que le firewall de la machine le permette).
Installer le certificat - Debian 10/11
Etape 1 : Installer le client Certbot selon le site officiel https://certbot.eff.org/
installer snapd, puis installer le core (et vérifier qu'il est à jour) , puis installer certbot et créer un lien symbolique
apt update && apt install snapd snap install core; snap refresh core snap install --classic certbot ln -s /snap/bin/certbot /usr/bin/certbot
Etape 2 : Exécuter le client avec une RSA de 4096bits
certbot --apache --rsa-key-size 4096
Les vhost HTTP apache sont automatiquement détecté et proposé. Confirmer. Le(s) certificat(s) sont automatiquement générés/récupérés/installé, le(s) vhost Apache HTTPS créé(s) et les vhost http redirigé(s) vers https, et la config Apache est reloadée dans la foulée
Bon à savoir
On peut simuler un renouvellement pour être certain qu'il fonctionnera correctement (le service crée automatiquement une tâche cron pour cela) :
certbot renew --dry-run
Par défaut, le niveau de chiffrement est correct ; SSLv2 et v3 désactivé, suite de ciphers robuste, Foward Secrecy activé, SSL compression off...
On obtiens (à conditions d'avoir une installation Apache et Openssl à jour : 2.4.10 dans cet exemple) une note de A sur ssllabs.com
On peut néanmoins renforcer un peu plus la sécurité en effectuant quelques manipulations simples
Renforcer la sécurité et obtenir la note maximal (A+) sur ssllabs.com
Activer l'OCSP stappling
Ajouter à la fin du fichier de config du module ssl les directives suivantes :
SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
Activer le Strict Transport Security (HSTS)
Ajouter dans le fichier de config de Let's Encrypt les directives suivantes :
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff
Après avoir redémarré Apache, on devrait obtenir la note de A+ sur le test de ssllabs.com
Renouveler un certificat existant
certbot-auto --rsa-key-size 4096 renew
(ou certbot tout court au lieu de certbot-auto selon l'install)
Mettre à jour l'email / contact
certbot update_account --email [email protected]
ou
certbot-auto register --update-registration --email [email protected]
ou
certbot register --update-registration --email [email protected]
ou
certbot update_account --email [email protected]