Guide pratique pour installer un certificat SSL de Gandi sur un serveur Nginx sous Debian
Pour sécuriser mon site web Informathic.com et protéger les données de mes utilisateurs, j’ai décidé d’installer un certificat SSL sur mon serveur Nginx. Ce guide détaille chaque étape du processus, de l’achat du certificat chez Gandi à sa configuration sur un serveur Debian.
Acheter un certificat SSL chez Gandi
Sélectionner le bon certificat
Avant de pouvoir installer un certificat SSL, je dois d’abord en acheter un. Gandi offre une variété de certificats SSL adaptés à différents besoins. Pour choisir le bon certificat, il faut considérer plusieurs critères :
- Le niveau de validation souhaité (Validation de Domaine, Validation d’Organisation ou Validation Étendue)
- La durée de validité du certificat
- Le nombre de sous-domaines que je souhaite sécuriser
Dans mon cas, j’opte pour un certificat de validation de domaine (DV) qui est rapide et facile à obtenir.
Passer commande et vérifier le domaine
Je vais sur le site de Gandi, sélectionne le certificat qui me convient et passe ma commande. Une fois la commande effectuée, Gandi me demande de valider la propriété du domaine. Je choisis la méthode de vérification par email. Un mail de vérification est envoyé à l’adresse administrateur@mondomaine.com, et il me suffit de cliquer sur le lien contenu dans ce mail pour confirmer ma propriété.
Installer Nginx sur Debian
Mettre à jour le système
Avant d’installer Nginx, il est crucial que mon système Debian soit à jour. A ce sujet, avez-vous un bon processeur PC? J’utilise les commandes suivantes pour mettre à jour tous les paquets installés :
sudo apt update
sudo apt upgrade
Installer Nginx
Avec le système à jour, j’installe maintenant Nginx avec la commande suivante :
sudo apt install nginx
Une fois l’installation terminée, je démarre et active Nginx pour qu’il tourne automatiquement au démarrage :
sudo systemctl start nginx
sudo systemctl enable nginx
Générer une demande de signature de certificat (CSR)
Pour générer une CSR (Certificate Signing Request), j’exécute cette commande OpenSSL :
openssl req -new -newkey rsa :2048 -nodes -keyout monsite.key -out monsite.csr
Cette commande crée deux fichiers : une clé privée (monsite.key) et une demande de signature de certificat (monsite.csr). Pendant le processus de génération, je renseigne les informations suivantes : pays, région, ville, organisation, unité organisationnelle, nom commun (nom de domaine).
Envoyer la CSR à Gandi
Je retourne sur l’interface de gestion des certificats de Gandi et télécharge la CSR générée précédemment. Après soumission, Gandi traite la demande et émet le certificat SSL. Une fois prêt, je reçois un fichier ZIP contenant le certificat ainsi que les certificats intermédiaires.
Configurer Nginx pour utiliser le certificat SSL
Télécharger et organiser les fichiers SSL
Je commence par télécharger le fichier ZIP reçu de Gandi et extrais son contenu. Les principaux fichiers dont j’ai besoin sont :
- monsite.crt (le certificat SSL)
- GandiIntermediateCA.pem (les certificats intermédiaires)
Je place ces fichiers dans le répertoire /etc/nginx/ssl. Voici comment copier les fichiers :
sudo cp monsite.crt /etc/nginx/ssl/
sudo cp GandiIntermediateCA.pem /etc/nginx/ssl/
sudo cp monsite.key /etc/nginx/ssl/
Modifier la configuration de Nginx
J’édite ensuite le fichier de configuration Nginx correspondant à mon site, généralement situé dans /etc/nginx/sites-available/monsite.conf. J’ajoute ou modifie les lignes suivantes pour activer SSL :
server {
listen 443 ssl;
server_name www.monsite.com;
ssl_certificate /etc/nginx/ssl/monsite.crt;
ssl_certificate_key /etc/nginx/ssl/monsite.key;
ssl_chain_file /etc/nginx/ssl/GandiIntermediateCA.pem;
location / {
root /var/www/monsite;
index index.html index.htm;
}
# Autres directives...
}
Je m’assure également que Nginx écoute sur le port 80 pour rediriger tout le trafic HTTP vers HTTPS :
server {
listen 80;
server_name www.monsite.com;
return 301 https://$host$request_uri;
}
Tester et redémarrer Nginx
Avant de redémarrer Nginx, je teste la configuration pour détecter toute erreur syntaxique éventuelle :
sudo nginx -t
Si le test est concluant, je redémarre Nginx pour appliquer les changements :
sudo systemctl reload nginx
Vérifier l’installation et mettre à jour les configurations si nécessaire
Utiliser des outils en ligne pour tester le SSL
Pour m’assurer que le certificat SSL est correctement installé, j’utilise divers outils en ligne comme le SSL Checker de Gandi ou SSL Labs. Ces outils m’aident à identifier les problèmes potentiels tels que les chaînes de certificats incomplètes ou les erreurs de configuration.
Forcer HTTPS et améliorer la sécurité
Je veux forcer les connexions HTTPS et améliorer la sécurité globale de mon site. Pour cela, j’applique quelques améliorations supplémentaires dans le fichier de configuration de Nginx :
- Ajout d’en-têtes HSTS (Strict-Transport-Security) pour indiquer aux navigateurs de toujours utiliser HTTPS :
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
- Désactivation des protocoles SSL obsolètes :
ssl_protocols TLSv1.2 TLSv1.3;
- Mise en œuvre des meilleures suites de chiffrement :
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384 :ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
Avec ces ajustements, non seulement je garantis une connexion sécurisée, mais aussi je renforce la protection contre diverses attaques potentielles.
Commentaires
Laisser un commentaire