Let's Encrypt
Auteur
Introduction
Cette page s'intéresse à la compréhension de Let's Encrypt, puis présente un tutoriel simple d'utilisation de Let's Encrypt via le logiciel Certbot (dans le cas d'un serveur Apache installé sur un système d'exploitation Ubuntu. Pour d'autres utilisations, visitez le site du logiciel.
Let's Encrypt
Let’s encrypt est une autorité mondiale de certification délivrant des certificats gratuits pour crypter les échanges HTTP, et donc passer de l’HTTP à l’HTTPS. Ces certificats doivent être placés à la racine de l’hôte, la mise en place de let’s encrypt peut donc nécessiter des droits SSH vers l’hôte. Afin de prouver que le demandeur de certificats possède bien le site, le protocole ACME est utilisé. Let’s encrypt encourage l’utilisation de Certbot pour une gestion simplifiée des certificats. Les certificats délivrés par Let’s encrypt ont une validité de 90 jours. Il est donc nécessaire de les renouveler. Certbot propose un système de renouvellement automatique.
Certbot
Ce tutoriel couvre l'installation et l'utilisation de Certbot dans le cas d'un serveur Apache installé sur un système d'exploitation Ubuntu. Les manipulations suivantes sont à faire sur le serveur. Il est donc nécessaire de pouvoir accéder au serveur et le modifier, par exemple par un accès SSH.
Installation
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot python-certbot-apache
Création du certificat
La commande suivante permet de générer le certificat et de configurer automatiquement une vhost Apache https utilisant ce certificat.
sudo certbot --apache
Pour se contenter de générer le certificat (ce qui nécessite donc une configuration d'Apache manuelle), le commande suivante peut être utilisée.
sudo certbot --apache certonly
Test du renouvellement automatique
sudo certbot renew --dry-run
Renouveler les certificats
Il faut créer une tâche de fond qui lance certbot renew.
Exemple (tous les jours à midi et minuit) :
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Astuces
- Apache ne supporte pas d'appels à Listen qui se superposent (e.g. deux fois Listen 80)
- Il est nécessaire d'activer le mod_ssl d’Apache
- Les connexions https se feront sur le port 443 (il faut donc une vhost qui reçoive sur ce port, et qui copie celle qui reçoit sur 80 tout en renseignant le certificat)
- Avoir plusieurs vhost avec le même nom de serveur peut créer des soucis (e.g. 500)
- www.ssllabs.com/ssltest/analyze.html permet de tester le certificat et l’accès au site
- Le succès de la création du certificat provoquera le message suivant (domain.name étant le nom de domaine pour lequel le certificat a été produit)
domain.name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://domain.name You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=domain.name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/domain.name/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/domain.name/privkey.pem Your cert will expire on xxxx-xx-xx. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Sources
Site de Let's Encrypt : letsencrypt.org/
Site de Certbot : certbot.eff.org/
Liens utiles
Image pour l'utilisation d'Apache et Certbot avec Docker : github.com/BirgerK/docker-apache-letsencrypt Informations sur la configuration d'Apache pour tenir compte des certificats : www.ssl247.fr/support/installer/apache