HTTPS • Let's Encrypt • Nginx

Sécuriser un site avec Let's Encrypt

Guide complet pour obtenir un certificat TLS gratuit et configurer HTTPS avec Nginx sur Ubuntu. Inclut la configuration, les redirections automatiques et le renouvellement des certificats.

Étapes de configuration

1

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Un nom de domaine (ex. example.com) pointant vers l'IP publique du serveur
  • Ubuntu avec Nginx installé : sudo apt install nginx
  • Ports 80 (HTTP) et 443 (HTTPS) ouverts dans le pare-feu
2

Installation de Certbot

Installez Certbot et le plugin Nginx :

sudo apt update
sudo apt install -y certbot python3-certbot-nginx
3

Configuration du pare-feu UFW

Si UFW est activé, autorisez le trafic HTTP et HTTPS :

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'  # optionnel
4

Création du server block Nginx

Créez le répertoire du site et le fichier de configuration :

sudo mkdir -p /var/www/example.com/public
sudo nano /etc/nginx/sites-available/example.com

Ajoutez cette configuration de base (remplacez example.com par votre domaine) :

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Activez le site :

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
5

Obtention du certificat Let's Encrypt

Lancez Certbot pour obtenir et installer automatiquement le certificat :

sudo certbot --nginx -d example.com -d www.example.com
Processus interactif : Certbot vous demandera votre email, l'acceptation des conditions d'utilisation, puis proposera de rediriger automatiquement tout le trafic vers HTTPS (recommandé).
6

Durcissement de la sécurité TLS (optionnel)

Pour renforcer la sécurité, ajoutez ces directives dans le bloc server qui écoute sur le port 443 :

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Puis redémarrez Nginx :

sudo nginx -t && sudo systemctl reload nginx
Attention : HSTS force l'utilisation d'HTTPS. Assurez-vous que votre certificat fonctionne parfaitement avant d'activer cette directive.
7

Test du renouvellement automatique

Testez le processus de renouvellement automatique :

sudo certbot renew --dry-run

Vérifiez que le timer systemd est actif :

systemctl status certbot.timer
8

Vérification finale

  • Visitez http://example.com → doit rediriger vers https://example.com
  • Vérifiez la validité du certificat via l'icône de sécurité du navigateur
  • Testez avec différents sous-domaines si configurés