Let’s Encrypt : easy !

encrypt-2

 

Personne a dû passer à coté de la news du 3/12/15 ?
Enfin des certificats faciles à générer, sans devoir trouze mille euros et watt mille pièces justificatives !

Mais l’avez vous testé ?
c’est  « trop fa-ci-le » !

On commence par installer les paquets et les dépendances :

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

Premier défaut de Let’s Encrypt, il ne faut pas de serveur qui écoute sur le port 80, car il embarque lui même un serveur web pour tester la légitimité de votre demande de certificat :/
Donc, dans mon cas on commence par un :

systemctl stop nginx

Puis on lance la création du/des certificats :

./letsencrypt-auto certonly -d mondomaine.fr -d monsousdomaine1.mondomaine.fr -d monsousdomaine2.mondomaine.fr --rsa-key-size 4096

explications :

  • l’argument « certonly » permet de générer seulement le certificat et ses clés dans le répertoire /etc/letsencrypt/live/
  • « -d » permet de passer les domaines et sous domaines en argument (sinon ça sera en Ncurses).
  • « –rsa-key-size » par défaut la taille de la clé RSA est de 2048 bits, ce qui n’est pas recommandé par l’ANSII, on en profite donc pour la passée en 4096 bits.

Si tout ce passe bien, vous aurez une sortie du type :

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/mondomaine.fr/fullchain.pem. Your cert will
   expire on 2016-03-14. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.

 

On modifie le virtual host sous Nginx (/etc/nginx/sites-enabled/default-ssl) :

server {
    root /var/www/;
    listen       443;
    server_name www.mondomaine.fr;
    index index.php index.html;
    ssl_certificate /etc/letsencrypt/live/www.mondomaine.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.mondomaine.fr/privkey.pem;
}

Tant qu’à y être et à avoir un beau certificat ssl valide, autant avoir une redirection du 80 vers le 443 !
Il suffit de rajouter dans /etc/nginx/sites-enabled/default, la règle :

return 301 https://$server_name$request_uri;

Il suffit de redémarrer le serveur Nginx, et via un navigateur vérifier la validité de votre nouveau certificat, exemple pour moi :

Capture d’écran_2015-12-14_16-16-08

Autre défaut de Let’s Encrypt : la validité du certificat, mais via « letsencrypt-auto », il facile de scripter dans une tache cron, le renouvellement des certificats.

Enjoy 😉

13 Responses to “Let’s Encrypt : easy !”

  1. Nicodeme dit :

    Merci pour ce petit tuto ! Simple mais d’une redoutable efficacité !

  2. Genma dit :

    Aeris n’est pas si enthousiaste. Let’s Encrypt : joies… et déceptions ! https://blog.imirhil.fr/2015/12/12/letsencrypt-joie-deception.html
    Oui c’est facile, mais du coup ça cache quelque chose. Cf son billet.

    • Sheldon dit :

      Ouais je suis tombé sur son article aussi, c’est vrai qu’il dresse un bilant peu glorieux, reste que en attendant, il n’y a pas beaucoup de concurrence pour déployer facilement des certificats.

      la question est vaut il mieux rester en http (avec les risques que l’on connaît), ou passer par un fournisseur dont on ne connaît pas encore grand chose ?

      • Aeris dit :

        Mon propos est plutôt le suivant : HTTPS, c’est devenu tout sauf juste déployer un certificat.

        C’est aujourd’hui essentiellement de la config côté serveur (suites de chiffrement, tailles des clefs, HPKP, HSTS, DANE/TLSA, HTTP/2…), le certificat est à la limite totalement accessoire et si les protocoles étaient correctement implémentés (voire même implémenté tout court comme dans le cas de DANE/TLSA), on n’aurait plus de problème de certificats autosignés ou de CA, chacun pourrait gérer ses propres certificats (sans erreur côté utilisateur même pour un auto-signé ou du CAcert).

        Let’s Encrypt, comme HTTP/2, a laissé tout ça de côté, pour ne prendre en compte que la seule partie qui a toujours été fiable, à savoir la génération d’un certificat.
        Et surtout, les choix faits parfois par défaut (clef à 2048 bits par défaut, renew de la clef privée) parfois imposés (renew obligatoire tous les 90j) cassent tout le reste (HPKP en particulier).

        On a toujours pu fonctionner, y compris très correctement (A+ sur SSLLabs/CryptCheck, HPKP actif, DANE/TLSA déployé…) avec CAcert ou StartSSL, alors que Let’s Encrypt vient nous péter tout ça.
        En ce sens, Let’s Encrypt est (peut-être) une bonne réponse pour le monde des CA (à quand le 1er hack cependant ? :D), mais est une énorme régression dans le monde de TLS dans son ensemble.

  3. Nova dit :

    Salut Sheldon !

    On peut aussi utiliser une authentification webroot pour renouveler via un cron plusieurs domaines et sous domaines

    La manip sous Apache / Nginx : https://www.noobunbox.net/serveur/auto-hebergement/installer-configurer-renouveler-automatiquement-un-certicat-ssl-lets-encrypt

    Dis moi ce que tu en penses

  4. Jordan dit :

    Hello Sheldon !

    Merci pour ce tuto. J’ai cependant une question (liée à un autre de tes articles), si on est chez Orange avec son (fameux) loopback ? As-tu une idée de comment générer le certificat ?

    Puisque quand je saisis les URLs de mes domaines, ils pointent sur ma Livebox de chez moi..
    Je pourrais sans doute passer par un VPN, mais j’essaye de générer un certificat pour le NAS, et je doute pouvoir en mettre un sur celui-ci !

    Si tu as des pistes, je suis preneur 🙂

    • Sheldon dit :

      Hello,

      J’ai mon propre DNS (un dnsmasq, voir post plus vieux), je n’ai donc plus ce fameux problème de loopback 😉

    • Novakin dit :

      Salut Jordan !

      Je me permets de te réponndre 🙂

      Tu peux tranquillement générer des certificats let’s encrypt même avec un FAI comme Orange.

      Il suffit d’utiliser l’authentification webroot, puisque dans ce cas là c’est l’API let’s encrypt qui vérifie si les DNS pointent bien sur l’IP du serveur qui demande les certificats.

      • Jordan dit :

        Hello Novakin !

        Merci pour l’info ! J’ai pu en générer facilement avec mon Synology, DSM 6 permet de le faire donc même pas eu besoin de passer par le webroot, mais je prends note !

        Merci 🙂

        • Novakin dit :

          Re Jordan.

          Je parlais de webroot parce que c’est la seule méthode d’authentification que je connaisse.

          Mais en y réfléchissant dans tous les cas je pense que peut importe le client demandant la génération d’un certificat lets encrypt et son authentification cela fonctionne. Avec ou sans loopback

          C’est l’API lets encrypt qui cherche a vérifier que le domaine pointe bien sur l’ip qui fait la demande.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *