Configuration de Nginx pour le support HTTPS avec SSL

Prérequis

Pour configurer HTTPS dans Nginx, vous devez disposer d'un nom de domaine enregistré, d'une résolution DNS correcte et d'un certificat SSL. Des solutions gratuites sont disponibles pour le DNS et le SSL, et l'enregistrement du domaine peut être effectué auprès de votre fournisseur d'hébergement. Ce guide se concentre sur l'intégration du certificat SSL dans Nginx et la résolution des problèmes courants.

Vérification et installation du module SSL pour Nginx

Commencez par vérifier si le module SSL est déjà inclus dans votre installation de Nginx. Exécutez la commande suivante dans le répertoire des exécutables de Nginx :

./nginx -V

La sortie doit inclure --with-http_ssl_module dans les arguments de configuration. Si c'est le cas, passez directement à la section de confiugration. Sinon, suivez les étapes ci-dessous pour recompiler Nginx avec le support SSL.

  1. Localisez le répertoire source de Nginx, par exemple /opt/nginx-src-1.21.6.
  2. Accédez à ce répertoire et lancez la compilation avec les modules nécessaires : ``` cd /opt/nginx-src-1.21.6 ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
  3. Exécutez la commande make pour compiler. Si une erreur de type cast between incompatible function types survient, éditez le fichier objs/Makefile et supprimez l'option -Werror pour éviter que les avertissements ne soient traités comme des erreurs. ``` vi objs/Makefile
    
     Modifiez la ligne contenant `-Werror` en la retirant ou en la commentant.
    
  4. Une fois la compilation terminée, n'exécutez pas make install pour éviter d'écraser l'installation existante.
  5. Sauvegardez l'exécutable Nginx actuel : ``` cp /opt/nginx/sbin/nginx /opt/nginx/sbin/nginx.backup
  6. Arrêtez le service Nginx : ``` /opt/nginx/sbin/nginx -s stop
  7. Copiez le nouvel exécutable compilé : ``` cd /opt/nginx-src-1.21.6 cp ./objs/nginx /opt/nginx/sbin/
    
     Confirmez le remplacement si demandé.
    
  8. Démarrez Nginx : ``` /opt/nginx/sbin/nginx
    
    

Configuration du serveur Nginx pour HTTPS

Éditez le fichier de configuration Nginx (par exemple /opt/nginx/conf/nginx.conf) et ajoutez un bloc serveur pour HTTPS. Voici un exemple utilisant le port 8443 au lieu du port par défaut 443 à des fins de test :

server {
    listen       8443 ssl;
    server_name  exemple.fr;

    ssl_certificate      /etc/ssl/certs/exemple.crt;
    ssl_certificate_key  /etc/ssl/private/exemple.key;

    ssl_session_cache    shared:SSL:2m;
    ssl_session_timeout  10m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

Pour restreindre l'accès au domaine uniquement et bloquer les accès par IP, ajoutez un bloc serveur par défaut avant les autres configurations :

server {
    listen       8443 ssl;
    server_name  _;

    ssl_certificate      /etc/ssl/certs/exemple.crt;
    ssl_certificate_key  /etc/ssl/private/exemple.key;
    ssl_session_cache    shared:SSL:2m;
    ssl_session_timeout  10m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    return 403;
}

Vérifiez la syntaxe de la configuration et rechargez Nginx pour appliquer les changements :

/opt/nginx/sbin/nginx -t
/opt/nginx/sbin/nginx -s reload

Étiquettes: nginx ssl HTTPS configuration-serveur Linux

Publié le 15 juin à 04h00