Passer vos sites sous HTTPS avec apache et Let’s Encrypt

Sécurité
web


Aujourd’hui, il est de plus en plus nécessaire de mettre vos sites sous HTTPS afin d’améliorer votre référencement, protéger vos utilisateurs, protéger vos données mais aussi par exemple pour pouvoir utiliser la géolocalisation. Pourtant jusqu’à présent le passage sous HTTPS d’un site demandait beaucoup d’effort et des moyens financiers important notamment pour l’achat du certificat et son renouvellement. Avec Let’s Encrypt, il est possible de passer son site sous HTTPS avec un certificat d’autorité de manière vraiment très simple et gratuitement.

Comment fonctionne le HTTPS ?

Voici un grossier schéma sur comment votre navigateur va établir une connexion sécurisée avec un serveur HTTP :

Explicatif connexion HTTPS

  1. Demande de connexion au serveur en HTTPS
  2. Envoi du certificat au navigateur
  3. Le navigateur vérifie le certificat auprès d’une autorité de confiance
  4. L’autorité valide le certificat
  5. Le navigateur transmet au serveur une clef de chiffrement, crypté via le certificat, utilisée pour la suite de la connexion
  6. Le communication continue avec la clef de chiffrement

Dans notre cas, l’autorité de confiance sera Let’s Encrypt, qui fournit des certificats gratuitement, mais d’autres existent comme GlobalSign qui fournissent d’autres garantie de sécurité comme des certificats validant votre entité et votre adresse. Let’s Encrypt va, pour vous donner vos certificats, juste vérifier que les noms de domaines pour lesquels vous demandez des certificats pointent bien vers votre serveur.

Aujourd’hui, pour les navigateurs les plus communs les certificats valider par Let’s Encrypt suffisent donc pas besoin de plus, hormis si vous êtes une banques ou si vous en avez besoin dans le paiement en ligne. Maintenant voyons comment installer ces certificats.

Préparation du serveur

Pour commencer, nous allons tout d’abord activer le module SSL d’apache.

# a2enmod ssl
# service apache2 restart

Puis vérifier qu’apache écoute bien désormais sur ce port :

$ nmap localhost | grep 443
443/tcp  open  https

Puis pour finir avec les préparatifs, nous ajouterons la règle suivante à iptables pour qu’il ouvre l’accès au port 443 depuis l’extérieur.

# /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
$ sudo iptables -L | grep https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Pour plus d’information sur iptables, je vous ai fait un article qui date un peu mais reste d’actualité : Mise en place d’iptables

Installation

Maintenant que l’ensemble du serveur est prêt, nous allons simplement demander à l’outil de Let’s Enscrypt de nous configurer notre serveur apache correctement. Attention, étant donné que Let’s Enscrypt vérifie que vos noms de domaine pointent bien sur le serveur faite en sorte que ce soit le cas ;).

L’installation de l’outil se fait directement grâce au système de paquet Debian.

# apt-get install python-certbot-apache

Création des certificats

Pour créer les certificats rien de plus simple que d’appeler l’utilitaire qui vous posera quelques questions comme quels domaines vous voulez sécurisez, souhaitez vous une redirection automatique du HTTP vers le HTTPS, …

# certbot --apache
...

Si vous avez des virtual host avec des variables ServerAlias vous pouvez expliciter votre demande pour les alias via la commande :

# certbot --apache -d garetacar.eu -d parks.perhonen.fr

Enfin les certificat sont valable uniquement 3 mois, il vous faut donc les renouveler régulièrement via la commande

# certbot renew

Voila vos sites sont maintenant accessible en HTTPS, merci Let’s Enscrypt.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.