Let's Encrypt !

Présentation

Comme beaucoup de personnes ayant un site perso, je l’ai mis en SSL (comme ce blog finalement). Mais bon … comme c’est un site perso, j’ai pas forcément envie de prendre un certificat SSL payant. Et vla que Let’s Encrypt débarque ! le-logo-standard

Objectifs

Simple : avoir un site utilisant un certificat Let’s Encrypt.

Let’s Encrypt

Je ne vais pas faire une présentation poussée de Let’s Encrypt car d’autres le font mieux que moi (ici). Mais de manière très simpliste, Let’s Encrypt est un fournisseur de certificats ceux de manière gratuite et automatique (j’avais prévenu : simpliste la présentation). D’ailleurs, ce côté automatique est bien “poussé” car les certificats ont une durée de vie de 90 jours. Renouveler son certificat tous les 90 jours = galère donc c’est mieux de pouvoir le faire en automatique (+ d’infos et discussion ). A noter que Let’s Encrypt fonctionne sous la forme de challenge entre l’autorité et votre serveur. Afin de valider que vous êtes bien le maître de votre domaine, il va vous falloir montrer pattes blanches (même si j’ai l’impression que CertBot gère un peu tout …). Encore une fois, plus d’infos ici ou .

Let’s Encrypt et CertBot

En commençant la lecture des différents sites, j’ai remarqué que tous commençaient par l’installation d’une commande :

git clone https://github.com/letsencrypt/letsencrypt

dont le but est d’installer un client Let’s Encrypt. Par contre, en regardant la première page du site officiel, il parle d’un autre client “CertBot”. Je me suis dit : “ca commence bien …”. Mais en fait, il semble que l’un est la suite de l’autre : CertBot et Annonce.

Sauvegarde !

Avant d’aller tout casser sur mon serveur : une petite sauvegarde complète. Pour info, le serveur en question est hébergé chez 1&1, Debian 7 (qui ne semble pas avoir de package officiel) et Apache. J’a également fait un test sur SSLABS : selection_006. T mais bon C si on exclue la confiance dans le certificat.

Actions !

Première étape : simple

Première étape simple : le téléchargement de CertBOT :

wget https://dl.eff.org/certbot-auto 

J’ai voulu commencer par un petit

./certbot-auto --version 

et immédiatement, l’outil a lancé le déploiement de différents éléments. C’était indiqué dans la documentation mais je pensais pas que cela se ferait sur un simple – version. Bon quand il a fini :

letsencrypt 0.8.1

Confiance ou pas ?

Les différents tutos et la doc indiquent que le principe d’identification passe par un challenge. Quand on regarde la doc ‘simple‘ , cela semble absent. En fait, il faut demander la doc avancée pour voir cette petite note : 20160909_certbot_actions Donc en fait, il y a bien le challenge mais c’est fait “automatiquement” et l’outil va aller modifier directement les fichiers de configuration apache … La question est donc : confiance ou pas ?

Options

Avant de lancer la commande de génération, un petit tour sur la page des options. Par défaut, il n’en demande aucune donc je vais lister celles qui m’ont paru intéressantes : ici.

  • -vvv : Verbose. Je ne sais pas si je vais tout comprendre mais j’aime autant qu’il essaye de m’expliquer ce qu’il fait
  • –email: Classique,
  • -- domain : permet d’ajouter un domaine. Il est possible d’en mettre plusieurs au besoin,
  • –test-cert : permet de se mettre en mode test vis-à-vis de Let’s Encrypt. Le nombre d’appels étant limité, il est conseillé de passer par la pendant la phase de test,
  • –rsa-key-size : par défaut 2048. Une article pointe du doigt que 2048 ce n’est pas assez (ici) et fait référence à l’ANSI (ici ou la). Il semble que ce soit un sujet de discussion assez sympa. Bon, je vais changer le defaut mais 3072 ou 4096 … Le gouvernement américain dit au min 3072 … bon ben 4096 :),
  • –redirect : Redirige tout le traffic vers de l’HTTPS.

Premier lancement : en test

La commande

./certbot-auto --apache -v --email [EMAIL] --domain [DOMAIN] --test-cert --rsa-key-size 4096 --redirect

Et bim, les ennuis commencent :

The error was: NotSupportedError('Apache plugin support requires libaugeas0 and augeas-lenses version 1.2.0 or higher, please make sure you have you have those installed.',)

La souci vient (je pense) d’une erreur pendant l’installation. J’ai mal répondu à une question : 20160909_certbot_arf. Il faut donc installer les éléments à la main car j’ai pas trouvé le moyen de forcer / relancer l’installation des dépendances … Donc “ajout à la main” :

echo "deb http://ftp.debian.org/debian wheezy-backports main" | sudo tee -a /etc/apt/sources.list
apt-get update
apt-get install -t wheezy-backports libaugeas0 augeas-lenses

Deuxième lancement : toujours en test

Et ca marche (enfin), la commande se lance puisqu’il me demande la validation des conditions d’utilisation : 20160909_certbot_conditions et au final : selection_007 Si je refais un test ou que je charge le site avec FireFox : j’ai toujours un souci de certificat. Il n’est pas “Trusted”. Ce qui semble normal car je suis en mode test (confirmé ici).

Troisième lancement : plus en test

La même commande mais sans les informations de test :

./certbot-auto --apache -v --email thierry@lafamillebn.net --domain lafamillebn.net --rsa-key-size 4096 --redirect

Après avoir validé les conditions, je demande la génération d’un nouveau certificat ( 5 en 7 jours max plus que 4 … ) et au final : selection_009. Je retourne dans Firefox : selection_010. et dans SSL Labs : selection_011.

Souci avec le www

Si dans le navigateur, je rentre www.lafamillebn.net, j’obtiens une erreur de certificat : selection_012. Il faut ajouter cette url dans le certificat et relancer la génération (plus que 2 car j’ai du recommencer …)

Mise à jour

La commande est assez simple :

./certbot-auto renew 

. Pour le moment, elle ne donne rien car le certificat est toujours valide. Ils indiquent de le mettre en automatique mais je pense que je vais attendre une première mise à jour manuelle. L’idée étant de valider qu’effectivement le certificat est bien mis à jour.

Bilan

J’ai pu passer mes autres sous domaines (pas tous) sans soucis. Il reste la question de la mise à jour mais je me suis noté un rendez-vous pour gérer manuellement plus tard. La promesse était que ce serait simple : c’est le cas. Maintenant, n’est-ce pas trop simple ? Je ne suis pas un expert en sécurité, j’ai généré un certificat, j’ai regardé un peu le contenu des fichiers modifiés mais au final, je ne suis pas sur de maîtriser à 100%, le processus et encore moins les implications d’un site sécurisé. De plus comme pointé par quelques articles, l’HTTPS facile peut permettre à des petits malins de générer des faux sites plus vrais que nature et donner un sentiment de fausse sécurité. Personnellement, je pense que le souci est encore dans l’éducation des gens aux nouvelles technos. Ce n’est pas parce que c’est “vert” qu’il faut y aller les yeux fermés ! Mais bon … c’est déjà ça :) !

Et Windows / IIS

Comme je n’ai pas de serveur IIS sous la main, je ne peux que me réferrer à ce thread qui semble dire que des choses sont possibles car à ce client.

Liens