Salut à tous, comme vous avez pu le remarquer depuis quelques semaines (début décembre) le blog est passé en full HTTPS grâce aux certificats délivrés gratuitement par Let’s Encrypt.
Let’s Encrypt est une autorité de certification fondée dans le but de délivrer des certificats gratuitement pour un Web « plus sécurisé ».
Le programme est actuellement bêta publique depuis plusieurs semaines, mais largement utilisable pour une utilisation en production.
Free l’a récemment intégré à sa Freebox et de nombreuses entreprises comme OVH et Online se sont engagées à fournir des certificats gratuits à leurs clients. Même Synology l’intègre dans sa version de DSM 6.
Voici donc comment obtenir des certificats Let’s Encrypt pour vos domaines.
Pré-requis
– Un nom de domaine et un accès à sa zone DNS
– Un serveur sous Linux accessible depuis l’extérieur
– Avoir un accès SSH sur son serveur
Création des certificats
Dans un premier temps il faut vérifier que les domaines pour lesquels on souhaite obtenir un certificat pointent bien sur l’IP de notre serveur.
Il faut créer un champ A dans sa zone DNS avec le (sous)domaine et l’IP publique de notre serveur.
Dans un second temps nous allons nous connecter en SSH sur le serveur, installer Git si ce n’est pas déjà fait, et récupérer le programme Let’s Encrypt.
1 2 3 |
apt-get install git git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt |
Avant de continuer, vérifiez qu’aucun service n’écoute sur le port 80. Il est utilisé pour vérifier que vous êtes bien le propriétaire du domaine et du serveur.
Pour vérifier on peut utiliser cette commande :
1 |
netstat -lpt | grep LISTEN | grep http |
Si tel est le cas il faut couper le service temporairement. Exemple :
1 |
service nginx stop |
Let’s Encrypt intègre des utilitaires permettant d’installer automatiquement les certificats si on utilise un serveur Apache par exemple. Pour ma part, je tourne sous Nginx et le programme n’est pas encore tout à fait compatible.
Nous allons donc demander au programme de générer seulement les certificats sans chercher à les installer.
Je me sers par exemple de ces certificats pour mon serveur mail.
Nous allons mettre à jour les dépendances et afficher toutes les options disponibles avec la commande suivante.
1 |
./letsencrypt-auto --help all |
Un fois la mise à jour effectuée nous allons générer les certificats avec cette commande.
1 |
./letsencrypt-auto certonly |
Un formulaire vous invite à entrer votre adresse mail ainsi que les domaines concernés par la demande de certificat.
Félicitations ! Les certificats se trouvent dans le répertoire /etc/letsencrypt/live/nom_domaine/
Ils sont valables pour 3 mois.
Pour renouveler les certificats il suffit de lancer la commande suivante :
1 |
./letsencrypt-auto renew |
Et pour mettre à jour l’application, pensez à utiliser :
1 |
git pull origin master |
Utilisation des certificats Let’s Encrypt avec Nginx
Pour mettre en place le certificat sur mon blog j’ai donc modifié mon vhost Nginx de la façon suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
server { listen 80; server_name test.adrienfuret.fr www.test.adrienfuret.fr; rewrite ^ https://www.$server_name$request_uri? permanent; } server { listen 443 ssl; server_name test.adrienfuret.fr www.test.adrienfuret.fr; ssl on; ssl_certificate /etc/letsencrypt/live/test.adrienfuret.fr/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test.adrienfuret.fr/privkey.pem; ... ... |
La connexion au site est alors chiffrée avec un joli cadenas vert !
J’espère que ce tutoriel vous aura été utile, et que rapidement toutes vos applications seront chiffrées ! Alors surtout n’hésitez pas à partager !