Configurer Let’s Encrypt sur un stack FEMP pour l’hébergement d’un site WordPress.

Ce tuto détaille l’installation d’un certificat Let’s Encrypt en mode « webroot » ce qui n’oblige pas l’arrêt du serveur Nginx pour libérer le port 80 lors de la génération du certificat et de son renouvellement. C’est un choix pragmatique pour réduire les périodes de maintenance.


Pour débuter, vous devez installer le client Certbot qui va permettre de générer le certificat et le renouveler.

 pkg install py38-certbot-1.16.0,1

Pour générer votre certificat, exécutez la ligne de commande suivante en prenant soin de remplacer les noms de domaines « exemple » par le ou les vôtres qui apparaissent dans votre fichier de configuration « nginx.conf ».

certbot certonly -w /usr/local/www/wordpress -d exemple.com -d www.exemple.com

Sélectionnez le mode de création de certificats Webroot.

[3]: Place files in webroot directory (webroot)

Entrez votre adresse courriel.

john.doe@exemple.com

Acceptez les termes de service.

Terms of Service [Y]

Acceptez ou refusez de partager votre adresse courriel.

Share your email address [N]

Le certificat et sa clé privée sont générés dans les répertoires suivants :

Certificate is saved at: /usr/local/etc/letsencrypt/live/exemple.com/fullchain.pem
Key is saved at: /usr/local/etc/letsencrypt/live/exemple.com/privkey.pem

Créez un fichier de paramètre SSL. Habituellement il est créé automatiquement avec le plug-in Nginx de Cerbot, mais je préfère le créer manuellement.

nano /usr/local/etc/nginx/options-ssl-nginx.conf
ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;

ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";

Modifiez votre fichier de configuration Nginx pour y insérer les directives d’utilisation du port HTTPS (443) dans le bloc server.

nano /usr/local/etc/nginx/nginx.conf
server {
listen 80;
server_name exemple.com www.exemple.com;
root /usr/local/www/wordpress;
index index.php index.html index.htm;
client_max_body_size 64M;
listen 443 ssl;
ssl_certificate /usr/local/etc/letsencrypt/live/exemple.com/fullchain.pem;
ssl_certificate_key /usr/local/etc/letsencrypt/live/exemple.com/privkey.pem;
include /usr/local/etc/nginx/options-ssl-nginx.conf;

Ajoutez la redirection des requêtes HTTP sur HTTPS.

if ($scheme != "https") {
 return 301 https://$host$request_uri;
}

Vérifiez que votre fichier de configuration Nginx n’a pas d’erreur.

nginx -t

Redémarrez le service Nginx.

service nginx restart

Maintenant, créez la cédule de renouvellement automatique du certificat dans Cron.

crontab -e
0 12 * * * /usr/local/bin/certbot renew –quiet

Fin