Installation SSL sur Nginx et redirection 301 de HTTP vers HTTPS
Nginx est l'un des serveurs web les plus prisés au monde grâce à ses performances et à sa faible consommation de mémoire. Dans ce guide, nous vous montrons, avec un exemple complet de bloc server, comment déclarer un certificat SSL gratuit dans Nginx et comment rediriger tout le trafic HTTP vers le HTTPS sécurisé.
Fichiers nécessaires
Nginx attend le certificat et la chaîne intermédiaire dans un seul fichier combiné. Le fichier fullchain.pem est idéal pour cela ; il contient à la fois votre certificat et la chaîne CA. Il vous faut également la clé privée private.key.
fullchain.pem→ certificat + chaîne intermédiaire (ssl_certificate)private.key→ clé privée (ssl_certificate_key)
Si vous ne disposez pas de ces deux fichiers, validez votre nom de domaine avec notre assistant SSL gratuit et récupérez les fichiers fullchain.pem et private.key dans le paquet ZIP téléchargé.
Étape 1 — Transférez les fichiers sur le serveur
Copiez les fichiers dans un répertoire sécurisé et renforcez les permissions. Il est essentiel que la clé privée ne soit lisible que par root :
sudo mkdir -p /etc/nginx/ssl/alanadiniz.com
sudo cp fullchain.pem /etc/nginx/ssl/alanadiniz.com/
sudo cp private.key /etc/nginx/ssl/alanadiniz.com/
sudo chmod 600 /etc/nginx/ssl/alanadiniz.com/private.key
Étape 2 — Configurez le bloc server
Ouvrez le fichier de configuration de votre site (par ex. /etc/nginx/sites-available/alanadiniz.com). L'exemple ci-dessous contient deux blocs server : l'un redirige le HTTP vers le HTTPS, l'autre sert le TLS avec des paramètres sécurisés :
# 1) Rediriger définitivement toutes les requêtes HTTP vers le HTTPS
server {
listen 80;
listen [::]:80;
server_name alanadiniz.com www.alanadiniz.com;
return 301 https://$host$request_uri;
}
# 2) Serveur HTTPS
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name alanadiniz.com www.alanadiniz.com;
ssl_certificate /etc/nginx/ssl/alanadiniz.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/alanadiniz.com/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
root /var/www/alanadiniz.com;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
Étape 3 — Testez la configuration et rechargez
Pour détecter les erreurs de syntaxe, testez impérativement avant de redémarrer Nginx :
sudo nginx -t
Si la sortie indique syntax is ok et test is successful, rechargez le service en douceur (sans interruption) :
sudo systemctl reload nginx
Étape 4 — Vérification
Vous pouvez contrôler le bon fonctionnement de la redirection et du certificat en ligne de commande :
# Pour voir l'en-tête de redirection 301
curl -I http://alanadiniz.com
# Pour vérifier que la chaîne de certificat est servie complètement
echo | openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.com
Dans la première commande, vous devez voir HTTP/1.1 301 Moved Permanently et Location: https://.... Dans la seconde, assurez-vous que la chaîne est listée intégralement, du certificat jusqu'à la chaîne intermédiaire.
Erreurs courantes
- SSL_ERROR_BAD_CERT_DOMAIN : le
server_namene correspond pas au nom de domaine du certificat. Siwwwest inclus, indiquez les deux noms. - Chaîne intermédiaire manquante : n'utilisez pas seulement
certificate.crtpourssl_certificate; utilisezfullchain.pem. - Erreur de permission : si Nginx ne peut pas lire la clé privée, vérifiez les paramètres
chmod 600et de propriété.
Résumé
Sur Nginx, le SSL se résume à définir ssl_certificate et ssl_certificate_key et à faire qu'un bloc distinct redirige tout le trafic HTTP vers le HTTPS en 301. Si vous n'avez pas de certificat, obtenez votre certificat valable 90 jours avec notre assistant SSL gratuit, extrayez les fichiers fullchain.pem et private.key du ZIP et adaptez le bloc ci-dessus.