Le HTTPS se démocratise peu à peu et, pour plusieurs raisons, j’ai décidé de migrer l’intégralité de mes sites. Je vais vous expliquer aujourd’hui comment effectuer une transition simple de HTTP vers HTTPS en utilisant le service Let’s Encrypt.

Si tu en as rien à secouer des raisons qui m’ont poussé à migrer vers HTTPS, je t’invite à passer directement à la « Présentation de Let’s Encrypt » ou carrément au tutoriel si t’es complètement YOLO.

1. Pourquoi passer à HTTPS

a. Un meilleur référencement

Cela fait un moment que Google crie haut et fort qu’il favorise dans son classement les sites qui utilisent HTTPS au lieu de HTTP. Pour ma part, j’ai envie d’avoir un meilleur référencement car cela me permettra probablement de toucher plus de visiteurs et d’attirer l’attention sur le blog (et éventuellement mes autres sites / blogs).

De plus, début septembre, le géant de Mountain View franchissait un nouveau cap en annonçant qu’à partir de Janvier 2017, l’affichage de l’URL des sites en HTTP allait être modifié au sein de son navigateur Chrome.

Google indiquera bientôt qu'un site n'est pas sécurisé

Bon OK, cela ne concerne pas toutes les pages mais seulement celles qui comportent une saisie de mot de passe ou d’informations bancaires (dans un premier temps). Quoi qu’il en soit, sur une page en HTTP, l’URL sera précédée de « Non sécurisé », une indication très explicite pour l’internaute… Je me dis que cette indication lancée aux utilisateurs sera peut être étendue à TOUTES les pages HTTP le jour où Google-le-tout-puissant l’aura décidé et je préfère anticiper ça que de me retrouver à devoir faire une migration « en urgence ».

 

b. Des informations sécurisées

C’est la deuxième raison et qui est surement plus importante que celle énoncée juste avant : je veux que les informations que j’envoie et que je reçois du serveur soient chiffrées. Cela diminue le risque d’interception des informations qui transitent (mots de passes entre autres) par quelqu’un de mal intentionné.

Vous me direz « oui mais c’est toujours possible… ». Certes, mais au moins ce sera déjà un peu plus compliqué de récupérer une information exploitable tout de suite comme ça l’était jusqu’à présent. De plus, HTTPS permet de garantir au client (toi, mon petit visiteur inconnu) que les informations qui transitent entre le serveur et ton PC n’ont pas été altérées ! Je le fais donc pour moi, mais aussi un peu pour mes visiteurs.

Passons maintenant dans le vif du sujet.

 

2. Let’s Encrypt : qu’est ce que c’est ?

Let’s Encrypt est une autorité de certification (CA), libre, automatisée et gérée pour le bénéfice du public. C’est un service fourni par le Internet Security Group (ISRG).

Let’s Encrypt délivre aux utilisateurs les certificats numériques dont ils ont besoin afin de leur permettre d’implémenter HTTPS (SSL / TLS) pour leurs sites web, gratuitement, de la manière la plus simple possible, pour créer un Web plus sécurisé avec un haut degré de confientialité.

Les principes clés derrière Let’s Encrypt sont:

    Gratuit : Let’s Encrypt est entièrement gratuit ! (mais vous pouvez leur faire un don pour soutenir l’initiative)
    Automatique : Vous pouvez obtenir et renouveler vos certificats automatiquement.
    Sécurisé : Let’s Encrypt se base sur TLS 1.2 avec chiffrement en 2048 bits.
    Transparent : Tous les certificats délivrés ou révoqués seront enregistrées publiquement et disponibles pour quiconque souhaite les inspecter.
    Ouvert : Le protocole de délivrance et de renouvellement automatique sera publié en tant que norme ouverte que les autres pourront adopter.
    Indépendant : Tout comme les protocoles Internet sous-jacents, Let’s Encrypt est un effort conjoint au profit de la communauté, au-delà du contrôle de toute une organisation.

Et pour terminer, Let’s Encrypt est soutenu par quelques grands noms du monde informatique :

Let's Encrypt : de nombreux soutiens

Mais tout n’est pas rose puisque vos certificats générés depuis Let’s Encrypt ont une durée de vie « courte » : 90 jours. Le gros avantage, c’est que vous pouvez automatiser leur renouvellement sans problème… Suivez le guide !

 

3. Migrer ses sites web de HTTP vers HTTPS avec Let’s Encrypt

Le tutoriel suivant va vous expliquer comment mettre en place un certificat SSL Let’s Encrypt sur un de vos sites internet pour le passer en HTTPS. Les pré-requis sont les suivants :

– Système d’exploitation Ubuntu 16.04 configuré et opérationnel (vous pouvez également adapter le tutoriel à votre distribution)

– Serveur web Apache configuré avec un virtualhost

La première étape est d’installer le client qui permet de récupérer le certificat depuis l’autorité de certification et par la suite de renouveler vos certificats. Il en existe plusieurs mais Let’s Encrypt recommande l’utilisation de Certbot : https://certbot.eff.org/

On commence donc par installer le package :

sudo apt-get install python-letsencrypt-apache 

Ensuite, une fois que le package est installé vous pouvez créer votre premier certificat. A savoir que vous pouvez créer un certificat pour un seul domaine à la fois et ça se passe avec cette commande :

sudo letsencrypt --apache -d nom_de_domaine.com

Si vous avez des sous-domaines à passer en HTTPS également, vous pouvez taper cette commande à la place :

sudo letsencrypt --apache -d nom_de_domaine.com -d www.nom_de_domaine.com -d sd2.nom_de_domaine.com

Il est recommandé de mettre d’abord le domaine principal suivi par autant de sous-domaines que vous en avez. Certbot va vous demander une adresse e-mail puis si vous voulez que l’accès HTTPS soit obligatoire (Secure) ou optionnel (Easy) :

Let's Encrypt : HTTPS ou HTTP+HTTPS

Pour ma part, j’ai choisi « Secure » pour tous mes sites et c’est passé nickel ! Dès que vous voulez accéder à votre site en HTTP, vous êtes automatiquement redirigé vers le HTTPS et pourquoi laisser un accès HTTP quand on peut faire du full HTTPS ? Cette redirection est mise en place par Certbot directement dans le fichier vhost de votre domaine qui contient désormais ces lignes en plus :

RewriteEngine on
RewriteCond %{SERVER_NAME} =nom_de_domaine.com [OR]
RewriteCond %{SERVER_NAME} =www.nom_de_domaine.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

Si tout fonctionne et que vous souhaitez tester votre nouveau domaine en HTTPS, vous pouvez le faire à l’adresse suivante : https://www.ssllabs.com/ssltest/analyze.html?d=nom_de_domaine.com (remplacer nom_de_domaine.com par votre nom de domaine personnel bien entendu…) 

Let's Encrypt : Test du site en HTTPS

 

Si par hasard la commande lestencrypt pour générer le certificat ne fonctionne pas, jetez un coup d’oeil du coté de votre pare-feu, les ports sont peut être fermés.

 

4. Automatisation du renouvellement des certificats

Pour renouveler les certificats que vous avez généré, il faut taper la commande suivante :

sudo letsencrypt renew

Vous devriez voir apparaitre la liste des certificats que vous avez déjà généré avec un message indiquant qu’un renouvellement est inutile.

Comme c’est une opération à répéter régulièrement et que l’on risque d’oublier de le faire 9 fois sur 10, nous allons mettre en place un cron :

sudo crontab -e

Et y ajouter la ligne suivante :

0 2 5 * * /usr/bin/letsencrypt renew >> /var/log/le-renew.log

Ainsi, le 5 de chaque mois à 2h00 du matin votre serveur vérifiera tout seul comme un grand si vos certificats doivent être renouvelés et s’en chargera lui même !

Passer vos sites en HTTPS devrait donc être maintenant un jeu d’enfant !

Sponsornot : Zéro collaboration