GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment sécuriser Nginx avec Let's Encrypt sur CentOS 8

Dans cet article, nous aurons expliqué les étapes nécessaires pour sécuriser Nginx avec let's encrypt sur CentOS 8. Avant de poursuivre ce tutoriel, assurez-vous que vous êtes connecté en tant qu'utilisateur avec sudo privilèges. Toutes les commandes de ce didacticiel doivent être exécutées en tant qu'utilisateur non root.

Let's Encrypt est une autorité de certification qui fournit des certificats SSL gratuits pour le site Web, opérant depuis avril 2016 et soutenue par des entreprises et des organisations Internet du monde telles que Mozilla, Cisco, Chrome , Akamai, etc.

Prérequis :

  • Système d'exploitation avec CentOS Linux
  • Adresse IPv4 du serveur avec privilèges de superutilisateur (accès racine)
  • Terminal Gnome pour Linux Desktop
  • Client SSH PuTTy pour Windows ou macOS
  • Powershell pour Windows 10/11
  • Familier avec les commandes DNF

Sécuriser Nginx avec Let's Encrypt sur CentOS

Étape 1. La première commande mettra à jour les listes de packages pour vous assurer d'obtenir la dernière version et les dernières dépendances.

sudo dnf install epel-release
sudo dnf update
sudo dnf install mod_ssl openssl

Avant d'installer le domaine SSL Let's Encrypt doit être bien accessible et utiliser l'hôte virtuel Nginx. Lisez le tutoriel sur l'installation de Nginx sur CentOS 8.

Étape 2. Installez Certbot.

Le package certbot n'est pas inclus dans les référentiels CentOS 8 standard, mais il peut être téléchargé à partir du site Web du fournisseur :

sudo wget -P /usr/local/bin https://dl.eff.org/certbot-auto
sudo chmod +x /usr/local/bin/certbot-auto

Ensuite, générez un nouvel ensemble de paramètres DH 2048 bits à l'aide de la commande suivante :

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Pour obtenir un certificat SSL pour le domaine, nous allons utiliser le plugin Webroot qui fonctionne en créant un fichier temporaire pour valider le domaine demandé dans le répertoire ${webroot-path}/.well-known/acme-challenge :

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

Pour éviter la duplication de code, créez les deux extraits suivants qui seront inclus dans tous les fichiers de blocage du serveur Nginx :

sudo mkdir /etc/nginx/snippets
$ nano /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}
$ nano /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

Une fois les extraits créés, ouvrez le bloc du serveur de domaine et incluez l'extrait de code letsencrypt.conf, comme indiqué ci-dessous :

$ nano /etc/nginx/conf.d/example.com.conf

server {
  listen 80;
  server_name example.com www.example.com;

  include snippets/letsencrypt.conf;
}

Rechargez la configuration Nginx pour que les modifications prennent effet :

sudo systemctl reload nginx

Ensuite, exécutez cette commande pour obtenir un certificat et demandez à Certbot de modifier automatiquement votre configuration Nginx pour la servir, en activant l'accès HTTPS en une seule étape :

sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d your-domain.com -d www.your-domain.com

Enfin, étapes, modifiez votre bloc de serveur de domaine comme suit :

$ nano /etc/nginx/conf.d/example.com.conf

server {
    listen 80;
    server_name www.your-domain.com your-domain.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # . . . other code
}

Rechargez le service Nginx pour que les modifications prennent effet :

sudo systemctl reload nginx

Étape 4. Vérification de l'état de votre certificat.

Vous pouvez vous assurer que Certbot a correctement créé votre certificat SSL en utilisant le SSL Server Test de la société de sécurité cloud Qualys. Ouvrez le lien suivant dans votre navigateur Web préféré, en remplaçant your-domain.com avec votre domaine de base :

https://www.ssllabs.com/ssltest/analyze.html?d=your-domain.com

Félicitations, vous avez appris à sécuriser Nginx avec Let's Encrypt sur CentOS 8. Si vous avez des questions, veuillez laisser un commentaire ci-dessous.


Cent OS
  1. Comment installer Phorum avec Nginx sur CentOS 7

  2. Sécuriser Nginx avec Let's Encrypt sur Ubuntu 18.04 - Comment faire ?

  3. Comment sécuriser Nginx avec Letsencrypt sur Rocky Linux/Centos 8

  4. Comment installer Let's Encrypt avec Apache sur CentOS 7

  5. Comment installer Let's Encrypt sur CentOS 8 avec Nginx

Comment configurer Nginx Server Block et sécuriser Nginx avec Let's Encrypt SSL sur Rocky Linux 8 / CentOS 8

Comment installer Let's Encrypt SSL avec Nginx sur CentOS 7

Comment sécuriser Nginx avec le certificat SSL Let's Encrypt

Comment sécuriser Apache avec Let's Encrypt sur CentOS 8

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04

Comment sécuriser Apache avec Let's Encrypt sur Ubuntu 20.04