Le HTTPS est au centre de pratiquement toute notre utilisation régulière de l’internet mondial. Facebook, Google, Amazon, Twitter, le présent blog et sûrement votre site de cuisine préféré utilisent le HTTPS. Dans un écosystème où les mesures de sécurité les plus élémentaires sont parfois négligées, voyons ensemble comment et pourquoi mettre en place le HTTPS sur votre propre site web.

Préambule

Cet article en deux parties vise un double objectif : sensibiliser à l’utilisation du HTTPS (que ce soit en tant que simple internaute ou en temps qu’administrateur) et montrer par l’exemple que sa mise en place n’a (plus) rien de sorcier.

Cette première partie traitera donc de la théorie autour du HTTPS. Qu’est-ce que c’est ? Pourquoi l’utiliser et donc pourquoi le mettre en place ? Ces questions trouveront leur réponse dans la suite de cet article.

Le HTTPS : qu’est-ce que c’est ?

La version “securisée” du HTTP

Le HTTP (HyperText Transfer Protocol) au sens large, est le protocole de communication utilisé par le web pour naviguer, notamment sur les sites internet accessibles au travers de votre navigateur préféré. Ainsi, lorsque vous chargez une page web, le navigateur envoie la requête au serveur cible, qui lui répond avec la page web demandée. Tout cela est fait en HTTP, et dans le meilleur des mondes, en HTTPS.

En bref, ça marche comment ?

Sans la couche sécurisée, chiffrée du HTTPS, toute la communication est faite “en clair”, c’est à dire potentiellement lisible voire modifiable par quiconque se trouvant entre vous (le client) et le serveur. Le HTTPS, en chiffrant la communication grâce à du SSL/TLS protège les données voyageant au travers du HTTP en ne les rendant compréhensibles que par le destinataire. Pour s’assurer que le serveur destinataire est bien celui qu’il prétend, le HTTPS authentifie la cible grâce aux certificats, appelés généralement “Certificats SSL”.

HTTP-VS-HTTPS

Le HTTPS : pourquoi est-ce si important ?

Afin d’éviter le “Man in the middle”

Comme je le disais précédemment, en simple HTTP, toute la communication est en clair, donc pleinement accessible à qui que ce soit se trouvant entre vous et le serveur. Tirer profit d’une telle situation correspond à ce que l’on appelle une attaque “Man-in-the-middle”. Regardez plutôt le schéma ci-dessous :

man-in-the-middle

Ici, Helen communique avec le site “http://www.example.com” en simple HTTP. Ainsi, la teneur de son mot de passe envoyé est pleinement visible au yeux de l’attaquant. Carol, visiblement plus avisée ou au minimum plus chanceuse, communique avec le site “https://www.example.com” en HTTPS. De cette manière, l’attaquant ne voit que la version chiffrée et donc inutile du mot de passe.

Pour s’assurer de l’identité du destinaitaire

Le HTTPS offre aussi une autre protection, celle de s’assurer pour vous que le destinataire est bien celui qu’il prétend être et non pas un imposteur. Grâce à des certificats émis par des autorités de certification reconnues (par exemple OVH, goDaddy, Amazon ou encore Let’s Encrypt), votre navigateur est capable de valider l’identité du site visité. Cela permet notamment d’éviter toujours un peu plus les attaques de type Man-in-the-middle.

Le HTTPS : en tant qu’internaute, comment puis-je me protéger ?

En tant qu’internaute, seule votre vigilance vous sauvera. Si les sites que vous visitez arborent le petit cadenas vert au niveau de l’URL, alors le site en question est validé par votre navigateur. Bien sûr, il vous faut d’abord faire confiance à votre navigateur sur sa gestion du HTTPS. Mais aujourd’hui tous les navigateurs grand public font parfaitement ce travail et sont régulièrement mis à jour en cas de faille.

Il revient donc aux gérants des sites que vous fréquentez de mettre en place le HTTPS. Aujourd’hui (mai 2018), environ 70% des sites internet visités sont d’ores et déjà chiffrés d’après les statistiques de Mozilla Firefox (visible notamment sur la page télémétrie de Let’s Encrypt) :

graphique-progression-HTTPS

Le HTTPS : en tant qu’administrateur, est-ce compliqué à mettre en place ?

Aujourd’hui, mettre en place le HTTPS sur son propre serveur est facile et surtout totalement gratuit. Il n’y a donc plus aucune excuse pour ne pas le faire, dès la mise en place de votre site.

À propos de Let’s Encrypt

Let’s Encrypt, en plus de fournir des certificats gratuitement, fournit un outil pour récupérer et renouveler ses fameux certificats : Certbot. Il suffit de cloner le dépôt GitHub ou de passer par leur image Docker pour récupérer via le terminal tous les certificats dont vous pourriez avoir besoin, y compris pour tous vos sous-domaines. Depuis mars 2018, Let’s Encrypt fournit d’ailleurs des certificats appelés “wildcard”, qui valideront tous vos sous-domaines présents et futurs via un seul et unique certificat. Et cela toujours gratuitement.

Un plus pour le SEO

Sachez par ailleurs que les sites en simple HTTP sont moins bien référencés par Google (depuis 2014) et que les navigateurs tendent clairement à signaler à l’utilisateur l’absence de sécurité des sites qui ne seraient pas certifiés et protégés.

Le HTTPS : conclusion

Cette première partie sur la théorie autour du HTTPS est donc terminée : nous avons vu ce qu’était exactement ce protocole, en quoi il était important et comment l’utiliser, aussi bien en tant qu’internaute naviguant sur les interweb qu’en tant qu’administrateur cherchant à sécuriser ses plateformes web.

Dans la seconde partie de cet article, nous verrons comment techniquement mettre en place le HTTPS sur son serveur, en utilisant principalement Let’s Encrypt, Certbot, Nginx et Docker.