Recherche de site Web

Installez le certificat SSL Let's Encrypt pour Nginx sur RHEL 9/8


Dans cet article, nous vous expliquerons comment générer et installer un certificat SSL/TLS obtenu gratuitement auprès de Let's Encrypt Certificate Authority que nous utiliserons pour sécuriser les transactions HTTP du serveur Web Nginx sur RHEL et Distributions basées sur RHEL telles que Fedora, Rocky Linux et AlmaLinux.

Si vous souhaitez installer Let's Encrypt pour Apache sur RHEL et les distributions basées sur RHEL, suivez ce guide ci-dessous :

Exigences

  • Un nom de domaine enregistré avec des enregistrements DNS A valides pour pointer vers l'adresse IP publique du serveur.
  • Serveur Web Nginx installé avec SSL activé et les hôtes virtuels activés (uniquement pour l'hébergement de plusieurs domaines ou sous-domaines).

Configuration de notre environnement de test

Étape 1 : Installer le serveur Web Nginx dans les systèmes RHEL

1. Dans la première étape, si le démon Nginx n'est pas déjà installé, exécutez les commandes ci-dessous avec les privilèges root afin d'installer le serveur Web Nginx à partir des référentiels Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Remarque : les utilisateurs de Fedora n'ont pas besoin d'installer le référentiel epel.

Étape 2 : Installez Let's Encrypt (Certbot) dans les systèmes RHEL

2. La méthode la plus rapide pour installer le client Let's Encrypt sur les systèmes Linux consiste à installer les packages certbot et python3-certbot-nginx à partir du référentiel epel. .


dnf install certbot python3-certbot-nginx

3. Une fois le client certbot installé, vérifiez la version installée du logiciel Let's Encrypt en exécutant la commande ci-dessous :


certbot --version

certbot 1.30.0

Étape 3 : Obtenez un certificat SSL Let's Encrypt gratuit pour Nginx

4. Le processus d'obtention d'un certificat SSL/TLS gratuit pour Nginx sera effectué manuellement à l'aide de Let's Encrypt Standalone . plugin.

Cette méthode nécessite que le port 80 soit libre pendant que le client Let's Encrypt valide l'identité du serveur et génère des certificats.

Ainsi, si Nginx est déjà en cours d'exécution, arrêtez le démon avec la commande suivante et exécutez l'utilitaire ss pour confirmer que le port 80 n'est plus utilisé dans la pile réseau.


service nginx stop
systemctl stop nginx
ss -tln

5. Il est maintenant temps d'obtenir un certificat SSL gratuit auprès de Let's Encrypt en exécutant la commande certbot avec --nginx pour initialiser la récupération et la configuration du certificat de sécurité Let's Encrypt pour les domaines Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Enfin, si tout s'est déroulé comme prévu, un message d'information de félicitations s'affichera sur votre terminal bash. Le message s'affichera également lorsque le certificat expirera.

Étape 4 : Installez le certificat SSL Let's Encrypt dans Nginx

9. Maintenant que vous possédez un certificat SSL/TLS gratuit, il est temps de l'installer sur le serveur Web Nginx pour que votre domaine puisse l'utiliser.

Tous les nouveaux certificats SSL sont placés dans /etc/letsencrypt/live/ sous un répertoire nommé d'après votre nom de domaine. Utilisez la commande ls pour répertorier les fichiers de certificat émis pour votre domaine et les identifier.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Pour installer les fichiers de certificat dans Nginx et activer SSL, ouvrez le fichier /etc/nginx/nginx.conf pour le modifier et ajoutez les instructions ci-dessous après la dernière ligne d'écoute de bloc serveur. Utilisez l’illustration ci-dessous comme guide.

vi /etc/nginx/nginx.conf

Extrait du bloc SSL Nginx :

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Remplacez la chaîne nom de domaine pour que les certificats SSL correspondent à votre propre domaine.

11. Enfin, redémarrez le service Nginx et visitez votre domaine via le protocole HTTPS sur https://votredomaine. La page devrait se charger correctement, sans aucune erreur de certificat.

systemctl restart nginx
service nginx restart

12. Afin de vérifier le certificat SSL/TLS et sa rectitude, visitez le lien suivant :

https://www.ssllabs.com/ssltest/analyze.html 

13. Si vous recevez une notification indiquant que votre serveur prend en charge un échange de clés DH faible et une note globale de note B, générez un nouveau 13.. ChiffreDiffie-Hellman dans le répertoire /etc/nginx/ssl/ pour protéger votre serveur contre l'attaque Logjam en exécutant les commandes suivantes.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

Dans cet exemple, nous avons utilisé une clé 4 096 bits, ce qui prend en réalité beaucoup de temps à générer et impose une surcharge supplémentaire à votre serveur et à la négociation SSL.

S'il n'est pas explicitement nécessaire d'utiliser une clé aussi longtemps et que vous n'êtes pas paranoïaque, vous devriez être en sécurité avec une clé 2048 bits.

14. Une fois la clé DH générée, ouvrez le fichier de configuration Nginx et ajoutez les instructions ci-dessous après la ligne ssl_ciphers afin d'ajouter la clé DH et élevez le niveau de sécurité de votre domaine à la note A+.

vi /etc/nginx/nginx.conf

Ajoutez l'extrait de bloc suivant à Nginx.conf :

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Redémarrez le service Nginx pour appliquer les modifications et retestez votre certificat SSL en effaçant le cache des résultats précédent à partir du lien mentionné ci-dessus.

systemctl restart nginx
service nginx restart

Étape 5 : Le renouvellement automatique de Nginx Free permet de crypter les certificats SSL

16. Let's Encrypt CA publie des certificats SSL/TLS gratuits valables 90 jours. Les certificats peuvent être renouvelés et appliqués manuellement avant expiration à l'aide du plugin webroot, sans arrêter votre serveur Web, en exécutant les commandes ci-dessous :


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Lorsque vous exécutez la commande ci-dessus, assurez-vous de remplacer example.com pour qu'il corresponde à votre domaine.

17. Afin de renouveler automatiquement le certificat avant son expiration, créez la tâche cron dans un fichier crontab existant.


crontab -e

Ajoutez la tâche cron suivante au bas du fichier, qui s'exécutera tous les jours à midi pour vérifier l'expiration du certificat et le renouveler. L'option --quiet indique à certbot de ne pas générer de sortie.


0 12 * * * /usr/bin/certbot renew --quiet

C'est tout! Désormais, le serveur Nginx peut fournir du contenu Web sécurisé avec un certificat SSL/TLS Let's Encrypt gratuit sur votre site Web.