Utiliser Let's Encrypt : SSL gratuit, fiable et simple

https 24 oct. 2015

Bonne nouvelle ce soir, mon domaine est validé pour la BETA de Let’s Encrypt :)

Basiquement ce service devrait permettre d’avoir enfin un certificat SSL gratuit, simple à mettre en œuvre et compatible (sans alerte de sécurité) avec la plupart des navigateurs récents. Car en effet les SSL de premier niveau (validation de domaine) sont rarement gratuits et encore moins sans effet pour les visiteurs qui, selon leurs navigateurs/plugins, peuvent voir notamment des alertes de sécurité en voulant afficher une page Web.

Let’s Encrypt est une belle promesse de simplicité et d’uniformisation, sur le papier, et il ne restait qu’à la tester pour s’en faire une idée concrète. J’ai le plaisir d’être validé et vais donc m’y atteler.

La procédure ne semble pas être compliquée. Le plus ardue étant finalement de l’intégrer aux diverses sécurités (HSTS par exemple) mises en place pour le site. 

 

 IMPORTANT NOTES:
 – If you lose your account credentials, you can recover through
   e-mails sent to [email protected].
 – Congratulations! Your certificate has been saved at
   /etc/letsencrypt/live/upandclear.org/cert.pem and will expire on
   2016-01-22. To obtain a new version of the certificate in the
   future, simply run Let’s Encrypt again.
 – Your account credentials have been saved in your Let’s Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let’s
   Encrypt so making regular backups of this folder is ideal.

 

Et voilà !  J’ai un peu cafouillé sur le HSTS comme je m’y attendais, vu que j’en ai parlé mais que je n’ai surtout pas percuté de le changer avant de modifier mon certificat… (voir plus bas)

 

LE

Du coup je n’aurai qu’à relancer une MàJ du client LE courant janvier afin d’émettre un nouveau certificat et ainsi de suite. A moins que ça ne puisse être automatisé, ne serait-ce que via un script placé en cron.

 

Procédure

Pour l’instant réservée à ceux ayant eux leur.s domaine.s validés pour la BETA.

Suivez le guide ! Dans mon cas il a fallut l’adapter un peu, mon serveur Web n’étant pas encore géré de manière automatique par LE :

  • Si vous utilisez HSTS pensez à passer max-age= à 0 sinon plus d’accès au site le temps du refresh après le changement de certificat*
  • Coupez votre serveur Web
  • Téléchargez LE git clone https://github.com/letsencrypt/letsencrypt
  • cd letsencrypt
  • Puis lancez la génération du certificat avec l’authentification auprès de leur service (BETA) ./letsencrypt-auto auth --agree-dev-preview --server \ puis mettez ensuite le serveur indiqué dans l’email : https://xxx.letsencrypt.org/directory auth
  • Pour l’instant la configuration automatique ne marche que pour Apache2, pas Nginx donc standalone

A la fin de ces étapes nous avons le certificat et les clés. Tout est bien entendu généré en local et non sur les machines de LE.

Il faut maintenant aller éditer le fichier de configuration du vhost afin d’y modifier les ssl_certificate et ssl_certificate_key. Chez moi c’est ssl.conf

###
# SSL Settings
###
ssl_protocols              TLSv1.2;
......
## ssl_certificate /etc/nginx/ssl/ssl.crt;
ssl_certificate /etc/letsencrypt/live/upandclear.org/fullchain.pem;
## ssl_certificate_key /etc/nginx/ssl/ssl.key;
ssl_certificate_key /etc/letsencrypt/live/upandclear.org/privkey.pem;

Relancez votre serveur Web et souriez :)

 

 

NB: la liste des paquets installés par LE sur la machine (propre à chaque config du coup)

augeas-lenses:all 0.10.0-1
libaugeas0:amd64 0.10.0-1
libexpat1-dev:amd64 2.1.0-1+deb7u2
libffi-dev:amd64 3.0.10-3
libpython2.7:amd64 2.7.3-6+deb7u2
python-dev:all 2.7.3-4+deb7u1
python-pkg-resources:all 0.6.24-1
python-setuptools:all 0.6.24-1
python-virtualenv:all 1.7.1.2-2
python2.7-dev:amd64 2.7.3-6+deb7u2

 

* HSTS : suite à un conseil avisé, n’oubliez pas que changer un certificat pour un domaine utilisant HSTS va justement casser HSTS pour la durée du max-age que vous avez configurée. Si vous voulez rester accessible via les navigateurs qui sont déjà venu visiter votre site, et on donc retenu que pendant la fameuse durée ils ne doivent faire confiance qu’au certificat SSL en place (et qu’on change justement), vous devez alors préalablement passer la directive max-age à 0.

 

 

 

Mots clés