Installer un certificat SSL sur nginx

nginx lit le certificat et la chaîne dans un seul fichier : la directive ssl_certificate reçoit le fullchain.

1. Placer les fichiers

Créez le fichier de chaîne complète (certificat en premier, intermédiaires ensuite) et protégez la clé :

cd /etc/nginx/ssl/www.exemple.fr
cat www.exemple.fr.crt intermediaires.crt > fullchain.pem
chown root:root fullchain.pem www.exemple.fr.key
chmod 644 fullchain.pem
chmod 600 www.exemple.fr.key

2. Configurer le bloc server

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name www.exemple.fr;
    root /var/www/exemple.fr;

    ssl_certificate     /etc/nginx/ssl/www.exemple.fr/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/www.exemple.fr/www.exemple.fr.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
}

Ne mettez pas le certificat seul dans ssl_certificate : les clients qui ne connaissent pas l’autorité intermédiaire signaleraient une chaîne incomplète. La directive http2 on; active HTTP/2 et exige nginx 1.25.1 ou plus récent. Avec une version antérieure, supprimez cette ligne et écrivez listen 443 ssl http2; (et listen [::]:443 ssl http2;) à la place.

3. Tester et recharger

nginx -t
systemctl reload nginx

nginx -t vérifie la syntaxe et l’ouverture des fichiers. Une erreur key values mismatch signifie que la clé ne correspond pas au certificat : voir les erreurs SSL courantes. Pour contrôler ce que le serveur présente, utilisez la commande openssl s_client donnée dans la page d’installation.

Rediriger HTTP vers HTTPS

server {
    listen 80;
    listen [::]:80;
    server_name www.exemple.fr;
    return 301 https://www.exemple.fr$request_uri;
}