Comment générer son certificat SSL avec Let's Encrypt

Let's encrypt (https://letsencrypt.org/) est un service, actuellement en beta fournissant la validation de certificats SSL (pour donc du HTTPS par exemple).

Ce service est possible via d'autres autorités de certifications, comme Gandi par exemple, mais se différentie ici par sa gratuité.

Actuellement en beta, il faut donc demander une invitation sur leur site (https://letsencrypt.org/.) Le service est maintenant ouvert à tous !

Commencez par vous connecter en ssh sur le serveur hébergeant le site que vous souhaitez passer en ssh.

Placez vous dans un dossier (de préférence, que vous retrouverez, afin de télécharger l'utilitaire,) vous devez avoir GIT d'installé.

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

Si vous avez apache ou nginx qui tourne (ou n'importe quel truc qui écoute le port 80) sur votre serveur, vous allez devoir le couper le temps de la génération, ici avec apache :

service apache2 stop

On peut maintenant lancer la création du certificat :

./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory certonly

Votre email, puis le domaine (sans le https) vous seront demandé :

1-letsencrypt-email.png

2-letsencrypt-domain.png

Hop, le certificat est généré ! (n'oubliez pas de relancer apache2 ou nginx)

3-letsencrypt-youpi.png

Maintenant tout se trouve dans le dossier de configuration de letsencrypt /etc/letsencrypt, dans le dossier live/votre_domaine, (avec un système d'archives et de liens symboliques afin d'éviter de modifier sa config apache/nginx à chaque renouvellement de certificat)

4-letsencrypt-root.png

5-letsencrypt-links.png

Il reste maintenant à configurer votre virtual host pour lui indiquer ces chemins. Avec Apache2 voici les instructions à ajouter dans votre fichier :

SSLCertificateFile "/etc/letsencrypt/live/oc.kgaut.net/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/oc.kgaut.net/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/oc.kgaut.net/chain.pem"

Evidement à adapter avec vos chemins à vous.

J'ai ajouté une redirection http => https en ajoutant ça au début de mon fichier :

<Virtualhost *:80>
        ServerName oc.kgaut.net
        RedirectMatch permanent ^(.*)$ https://oc.kgaut.net$1
</Virtualhost>

Relancez apache2 ou nginx et c'est tout bon !

6-letsencrypt-youpi2.png

Note : Le service est encore en beta, les certificats devront être regénérés au bout de 90 jours, (il peuvent l'être avant évidement). Pour cela, vous aurez juste à relancer la commande ci-dessous, qui ira écraser les anciens certificats.

./letsencrypt-auto renew

Regénération automatique de certificat

Il est possible d'automatiser automatiquement la demande de regénération de certificat à l'aide d'un petit script, (il va s'occuper de stopper apache, regénerer les certificats et enfin relancer apache :

#!/bin/bash

/usr/sbin/service httpd stop
/root/letsencrypt/letsencrypt-auto renew
/usr/sbin/service httpd start

Evidement le script est à adapter en fonction de l'endroit où ce situe letsencrypt.

J'ai enregistré le script sous :

/root/letsencrypt-renew.sh

Pour le tester et le lancer :

./root/letsencrypt-renew.sh

Mais on peut encore faire mieux et appeler ce script de manière automatique via une tache cron !

Voici l'entrée crontab pour appeler le script tous les dimanches soirs à 23h50 :

50 23 * * 0 /root/letsencrypt-renew.sh

 

Commentaires

Bonjour M. Kevin Gautreau.
Je suis sous Windows 10 Pro et j'aimerai savoir s'il existe une version windows pour créer un certificat Let's Encrypt ?
@+

Bonjour,

Je cherche à générer un certificat valide utilisable sur un serveur de dev distant mais installé en local (pas en localhost). Le https en local s'obtient facilement, mais un certificat valide est requis quand on veut utiliser des Services Worker sous Chrome (Firefox n'a pas les mêmes impératifs de sécurité - et une console de dev pourrie)

Savez-vous s'il est possible de générer un certificat valide pour un serveur on-line et s'en servir pour un serveur local (en modifiant le host par exemple)

Je viens de tester, pas de soucis chez moi :

2018-03-05-12-21-49-Screenshot-01.jpg

Bonjour,
Je viens de connaitre votre blog et j'ai fais un essai. Je suis sous windows, Git installer et j'ai une erreur à la commande suivante :
./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory certonly

Voici l'erreur:
"sudo" is not available, will use "su" for installation steps...
Requesting to rerun ./letsencrypt-auto with root privileges...
./letsencrypt-auto: line 161: su: command not found

Auriez-vous une petite idée ?
Merci d'avance

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...