Gestion de projet

Guide pratique pour installer un certificat SSL de Gandi sur un serveur Nginx sous Debian

Par Augustin Informathic , le juin 6, 2024 , mis à jour le juin 6, 2024 - 5 minutes de lecture
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

acheter certificat ssl 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).

Lire également :  Comment trouver un MOOC pour s'initier à la méthode agile ?

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.

ssl checker serveur gandi debian

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;

certificat ssl gandi secure

Avec ces ajustements, non seulement je garantis une connexion sécurisée, mais aussi je renforce la protection contre diverses attaques potentielles.

Augustin Informathic

Je gère de nombreux projets en entreprise au quotidien et me passionne pour les méthodes agiles. Le SCRUM et KANBAN n'ont plus de secrets pour moi donc j'essaie de partager des idées, conseils et méthodes pour gagner en efficacité dans la gestion de projet. Restons connectés !

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.