Installer Certbot pour Apache2 sur Ubuntu / Debian
Certbot est un logiciel libre servant de client ACME et d’outil pour le CA (Certificate Authority) Let’s Encrypt. Il nous permet de mettre facilement et gratuitement nos sites en HTTPS.
Installation de Certbot
Toutes les manipulations sont à faire en tant que root (sudo su -).
Pour Ubuntu > 14.04
1 2 3 |
add-apt-repository ppa:certbot/certbot apt-get update apt-get install python-certbot-apache |
Pour Debian > 8
Ajouter les backports
Si vous ne les avez pas ajouté, sachez que ça n’a pas d’impact sur vos mises à jour, ça vous permet juste de sélectionner ponctuellement des paquets indisponibles sur votre version.
1 2 |
# Editer /etc/apt/sources.list nano /etc/apt/sources.list |
Ajoutez à la fin, en remplaçant la version par la votre (ici c’est jessie)
1 |
deb http://ftp.debian.org/debian jessie-backports main |
Installer Certbot
1 |
apt-get install python-certbot-apache -t jessie-backports |
Configuration de Certbot pour Apache2
On peut demander à Certbot de configurer automatiquement les vhost d’apache, mais dès qu’on est dans un cas un peu complexe, ça marche mal et ça met le bazar dans les fichiers vhost.
Pour vous éviter ça, on va faire la configuration à la main.
Il faut déjà que vous listiez un à un les noms de domaine que vous souhaitez ajouter à votre certificat, car oui, vous aurez un unique certificat pour tous les noms de domaine de votre serveur, c’est plus une condition d’Apache2 que de Certbot.
Durant le processus d’installation du certificat, Let’s Encrypt va, avec Certbot, vérifier que vous possédez bien les noms de domaine pour lesquels vous souhaitez créer un certificat.
Il peut le faire de plusieurs manières mais par défaut, il vérifie la cohésion entre les DNS et l’IP publique du serveur, ce qui fonctionne parfaitement dans la grande majorité des cas.
Nous souhaitons maintenant configurer Certbot pour qu’il vérifie vos certificats
Cette commande accepte les conditions d’utilisation, fournit l’email et les noms de domaine à ajouter, sinon un assistant vous aidera, il n’est pas hyper efficace cependant.
1 |
certbot certonly --agree-tos --email webmaster@mondomaine.fr --apache -d "www.mondomaine.fr,mondomaine.fr" |
La commande de base est certbot certonly --apache .
Configuration d’Apache2 pour Certbot
Il vous faut maintenant un vhost configuré pour utiliser ce certificat avec votre nom de domaine.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webmaster@mondomaine.fr ServerName www.mondomaine.fr ServerAlias mondomaine.fr DocumentRoot /path/to/mondomaine.fr/ SSLCertificateFile /etc/letsencrypt/live/www.mondomaine.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.mondomaine.fr/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf <Directory /path/to/mondomaine.fr/> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/mondomaine.fr-error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/mondomaine.fr-access.log combined </VirtualHost> </IfModule> |
Les chemins utilisés par SSLCertificateFile et SSLCertificateKeyFile peuvent varier, à vous de voir ce qu’il y a dans le dossier /etc/letsencrypt/live/.
Tout le reste est configuré par Certbot.
Pensez à redémarrer Apache2 et votre certificat est en ligne !
1 |
service apache2 restart |
Renouvellement automatique du certificat
Le certificat expire au bout de 90 jours, quand il est sur le point d’expirer, certbot peut le renouveler par une simple commande certbot renew .
Cette commande ne fait rien s’il n’y a rien à renouveler, notre but est donc de mettre cette commande dans une tâche cron afin de l’exécuter régulièrement.
Il ne vous reste plus qu’à faire
1 |
crontab -e |
Et à entrer la tâche cron suivante:
1 2 |
# Tous les jours à 2h00 du matin, on tente de renouveler les certificats 0 2 * * * certbot renew |
Pour une configuration plus complète, d’autres distributions, des versions non prises en charge ici, voyez avec le site de Certbot.
Sources :
https://certbot.eff.org/
https://letsencrypt.org/