15 avril 2017

Apache et LetsEncrypt : Sécuriser son site (Linux)

Apache et LetsEncrypt : Sécuriser son site (Linux)

Sécuriser son site Apache avec Let’s Encrypt

L’amélioration de la sécurité de votre site Web par le cryptage des données, même sur les hébergements/serveurs les plus basiques, peut accroître la confiance de vos visiteurs dans votre site.
La configuration du cryptage sur votre serveur Web a été compliquée et coûteuse jusqu’à récemment, ce qui nuit souvent aux administrateurs dont les applications Web peuvent dépendre des utilisateurs. LetsEncrypt vise à modifier cela en facilitant la mise en œuvre du cryptage sur n’importe quel site. Projet Opensource, Letsencrypt permet d’obtenir et d’installer des certificats par des commandes simples et relativement automatisées.

Ce guide a pour but d’expliquer l’installation du service sur un serveur Linux avec Apache2.

En tant que nouvelle autorité pour les certificats, LetsEncrypt est capable d’emettre des certificats signes inter sites (cross-signed certificates en langue de Shakespear) qui fonctionnent avec les navigateurs modernes.

Installation de Let’s Encrypt

Let’s Encrypt simplifie grandement la manipulation et la gestion des certificats en les obtenants grace à une serie de commande simple. Leur renouvellement se fait uniquement par une tache régulière (Wiki : Tache Cron) simple à mettre en place.

Le protocol d’installation varie sur les différents linux, le plus simple est encore de passer par l’explication du site officiel si votre serveur n’est pas sur Ubuntu (version min 16.04) ou Debian (version minimale 8).

L’installation se fait donc par ligne de commande :

sudo apt-get install apache2 python-letsencrypt-apache

 

Une fois le package installé, vérifiez sa présence grace à :

letsencrypt --help

Si vous obtenez la méthode d’utilisation de letsencrypt, l’installation a bien été réussie, nous allons pouvoir mettre en place le logiciel.

 

Créer automatiquement des certificats

Le service de Let’s Encrypt va valider vos domaines en essayant d’identifier (voir explication en bas d’article) le serveur pour vérifier que les deux concordes. Il faut donc que vos domaines et sous domaines aillent vers des dossiers déjà présent et que les sites fonctionnent en HTTP.

 

L’installation de Let’s Encrypt sur Apache a été grandement simplifiée et les certificats sont automatiquement configuré à partir d’une commande simple :

sudo letsencrypt --apache

Cela va démarrer l’installation interactive du service par quelques questions simples :

  1. Si vous avez une configuration prééxistante, sélectionnez “No” (Non). Sinon “Yes” (Oui) utilisera vos VHOST actuels, c’est à dire votre configuration actuelle.
  2. Vous pouvez entrer les noms de domaine de votre serveur et de vos différents sites, en les séparant par des virgules.
  3. Entrez un email de contact, pour recevoir un mail en cas de problème, notamment pour les renouvellements de certificats.
  4. Confirmez que vous êtes d’accord avec les termes d’utilisation de service.
  5. Sélectionnez le mode de sécurité stricte si cela vous importe (pour le SEO par exemple) ou simple ce qui autorisera les anciennes connexions en HTTP à se faire égalment (“Easy”). Nous vous recommandons le mode “Easy” si vous avez déjà des sites installés.
  6. Si tout à bien fonctionné, un “Congratulations” viendra confirmer que tout s’est bien passé. Un lien vers SSL Labs vous permettra aussi de confirmer la validité du certificat.

 

A noter que si vous rencontrez des problèmes, cela vient probablement de l’accès à votre serveur ou d’un sous domaine mal nommé.

On recharge la configuration d’apache pour enfin voir le HTTPS apparaitre sur vos sites :

sudo service apache2 reload

 

Renouveller automatiquement ses certificats

A la fin de l’installation, le script vous indique que le renouvellement doit se faire tout les 3 mois. Rien de plus simple heureusement, cela a été également prévu par Let’s Encrypt.

Une simple commande suffit :

sudo letsencrypt renew --agree-tos

Si cette commande a bien fonctionné, vous pouvez désormais en faire une tache cron/automatique chaque jour en indiquant :

sudo letsencrypt renew

L’installation et la mise en place est terminée, on recharge la configuration d’apache une dernière fois et le tour est joué. Cette commande est aussi à mettre chaque jour en tache automatique/cron.

sudo service apache2 reload

Vos certificats seront désormais renouvellés tous les trimestres, automatiquement et gratuitement !

 

Comment le service authentifie le serveur

Le service valide le domaine dans lequel il est installé de manière similaire à un processus traditionnel en identifiant l’administrateur du serveur via une clé publique. Le client génère une nouvelle paire de clés lors de l’interaction avec les serveurs Let’s Encrypt pour la première fois et vise à prouver à l’autorité de certification que l’hôte contrôle sur un domaine particulier d’au moins une des deux manières suivantes:

  • Test des enregistrements DNS sur le sous-domaine.
  • Test d’accès à un fichier unique créé spécialement dans le bon dossier.