Outils pour utilisateurs

Outils du site


webadmin:apache2:lets-encrypt

Utiliser Lets's encrypt avec Apache 2

Let's Encrypt est une autorité de certification (CA) qui facilite l’acquisition de certificats SSL. Le service est gratuit.

Prérequis

  • Un nom de domaine avec un enregistrement de type A
  • Apache 2 et le module SSL activé pour l' hôte virtuel de travail

Activer le module SSL

Dans un premier temps on va faire fonctionner un hôte virtuel Apache 2 avec SSL

$ sudo a2enmod ssl
$ sudo a2ensite default-ssl.conf
$ sudo service apache2 restart

Dans le fichier de log /var/log/apache/error.log, le redémarrage du service indique bien qu'OpenSSL est à présent utilisé:

[Mon Oct 30 17:02:56.918392 2017] [mpm_prefork:notice] [pid 11316] AH00163: Apache/2.4.25 (Debian) OpenSSL/1.0.2l configured -- resuming normal operations
[Mon Oct 30 17:02:56.940329 2017] [core:notice] [pid 11316] AH00094: Command line: '/usr/sbin/apache2'

Une fois cette configuration fonctionnelle, si on teste la connexion au serveur avec un navigateur, une alerte est levée coté client car le certificat fournit par le serveur est auto-signé.

Let's Encrypt

L'installation du client et des scripts let's encrypt varie selon les distributions.

Debian Jessie

Disponible dans les backports:

echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list
apt update
apt install certbot -t jessie-backports

Pour Apache installer également le plugin apache:

$ sudo apt-get install python-certbot-apache

Ubuntu 16

$ sudo apt-get install certbot

Générer un certificat pour Apache

La procédure d'obtention d'un certificat pour Apache est facilité par script. Vérifier que l'installation du plugin est bien valide: invoquer letsencrypt avec l'argument help afin de vérifier que l'option --apache existe:

$ letsencrypt --help

On l'invoque de la façon suivante en spécifiant l'argument -d avec en paramètre le nom de domaine:

$ sudo ./letsencrypt-auto --apache --rsa-key-size 4096 -d vhost1.your_domain.tld -d vhost2.your_domain.tld

Un même certificat peut être utilisé par plusieurs hôtes virtuels, spécifier les noms DNS via l'argument -d . Répéter autant de fois que nécessaire.

La commande proposée ci-dessus retourne une erreur avec la version certbot 0.10.2

Le message suivant est affiché:

Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.

Elle ne devrait plus se présenter pour les versions de certbot 0.12.0 et supérieures. Cela est du à la désactivation du challenge par défaut TLS-SNI-01 utilisé par apache et nginx présentant des failles.

Pour pouvoir générer le certificat malgré tout:

certbot --authenticator standalone --rsa-key-size 4096 --installer apache -d vhost.phobos-net.fr --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"

Pour vérifier le statut du certificat SSL fournit, SSL labs propose un service ne ligne disponible à l'URL https://www.ssllabs.com/ssltest/

Les certificats fournis par let's encrypt sont valides 90 jours. Pour renouveler les certificats, il faut relancer le client avec les mêmes paramètres avant la date limite. Pour cela on créera une tâche cron.

Références

webadmin/apache2/lets-encrypt.txt · Dernière modification : 2021/02/01 21:51 de 127.0.0.1