Let's Encrypt

From air
Jump to navigation Jump to search

Auteur

CHANET Zoran

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