Dans ce tutoriel, nous allons vous expliquer comment installer un certificat SSL Let’s Encrypt gratuit sur un VPS CentOS 8 avec Nginx comme serveur web.
Let's Encrypt est une autorité de certification gratuite, open source et à but non lucratif qui fournit des certificats SSL gratuits pour les sites Web afin d'activer le cryptage TLS. Il a été développé par l'Internet Security Research Group (ISRG) et approuvé par tous les principaux navigateurs. Il est utilisé pour automatiser le processus de création, de validation, de signature, de mise en œuvre et de renouvellement des certificats pour les sites Web sécurisés.
L'objectif principal de Let's Encrypt est de promouvoir l'utilisation de SSL sur le Web et d'établir des connexions cryptées sur Internet, en protégeant tout le monde au cours du processus. Le certificat n'est valable que 90 jours, vous devrez donc le renouveler manuellement ou configurer le système de renouvellement automatique, qui doit être activé par défaut.
Actuellement, Let's encrypt prend en charge l'émission automatisée de certifications pour Apache, Nginx, Plex et HAproxy, ce qui devrait couvrir presque tous les cas d'utilisation. Commençons par notre guide d'installation.
Prérequis
- Pour les besoins de ce didacticiel, nous utiliserons un VPS CentOS 8.
- Un accès root SSH complet ou un utilisateur avec des privilèges sudo est également requis. Nos VPS sont tous livrés avec un accès root inclus par défaut sans frais supplémentaires.
- Un nom de domaine valide pointe vers votre adresse IP VPS.
Étape 1 :se connecter et mettre à jour les packages
Tout d'abord, nous allons devoir nous connecter à notre serveur en utilisant SSH. Vous pouvez le faire en saisissant cette commande :
ssh root@IP_Address -p Port_Number
N'oubliez pas de remplacer "root" par votre nom d'utilisateur si vous n'utilisez pas l'utilisateur root. Modifiez "IP_Address" et "Port_Number" en fonction de l'adresse IP et du numéro de port SSH de votre serveur. Le numéro de port SSH par défaut est 22.
Une fois connecté, vous devez mettre à jour tous vos packages vers leurs dernières versions disponibles.
dnf update -y
Une fois les mises à jour terminées, redémarrez votre système pour appliquer les modifications.
Étape 2 :Installer Nginx et PHP
Tout d'abord, installez le serveur Web Nginx et PHP en exécutant la commande suivante :
dnf install nginx php php-fpm php-cli -y
Une fois tous les packages installés, démarrez les services Nginx et PHP-FPM et activez-les au démarrage avec la commande suivante :
systemctl start nginx systemctl enable nginx systemctl start php-fpm systemctl enable php-fpm
Étape 3 :Configurer PHP-FPM
Par défaut, PHP-FPM est configuré pour s'exécuter en tant qu'utilisateur et groupe Apache. Dans ce tutoriel, nous utiliserons le serveur Web Nginx. Cela signifie que vous devrez configurer PHP-FPM pour qu'il s'exécute en tant qu'utilisateur et groupe Nginx.
Pour cela, éditez le fichier de configuration PHP-FPM :
nano /etc/php-fpm.d/www.conf
Modifiez la valeur de l'utilisateur et du groupe à partir de apache
en nginx
, comme indiqué ci-dessous :
user = nginx group = nginx
Enregistrez et fermez le fichier lorsque vous avez terminé. Redémarrez ensuite le service PHP-FPM pour appliquer les modifications :
systemctl restart php-fpm
Étape 4 :Créer un hôte virtuel Nginx
Avant de commencer, créez un exemple de site Web pour Nginx.
mkdir /var/www/html/yourdomain.com
Ensuite, créez un exemple de fichier PHP dans le répertoire du site Web et ouvrez-le avec votre éditeur de texte préféré :
nano /var/www/html/yourdomain.com/index.php
Ajoutez les lignes suivantes au fichier :
<?php phpinfo(); ?>
Enregistrez et fermez le fichier, puis définissez la propriété de votre site Web sur nginx
avec la commande suivante :
chown -R nginx:nginx /var/www/html/yourdomain.com/
Ensuite, créez un nouveau fichier de configuration d'hôte virtuel Nginx qui servira votre site Web :
nano /etc/nginx/conf.d/yourdomain.com.conf
Ajoutez les lignes suivantes :
server { server_name yourdomain.com; root /var/www/html/yourdomain.com; location / { index index.php; } access_log /var/log/nginx/yourdomain.access.log; error_log /var/log/nginx/yourdomain.error.log; location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }
Assurez-vous de remplacer toutes les instances de yourdomain
avec votre nom de domaine enregistré.
Enregistrez et fermez le fichier, puis vérifiez le fichier de configuration Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez voir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Ensuite, redémarrez le service Nginx pour appliquer les modifications de configuration :
systemctl restart nginx
Votre serveur Web devrait maintenant être opérationnel.
Étape 5 :Installer le client Certbot
Afin de générer un certificat Let's Encrypt pour votre site Web, vous devrez installer le client Certbot sur votre système.
Le Certbot est un outil en ligne de commande utilisé pour simplifier le processus d'obtention et de renouvellement des certificats SSL Let's Encrypt pour votre site Web.
Par défaut, le package Certbot n'est pas disponible dans le référentiel standard CentOS. Vous devrez donc le télécharger à partir du site Web du fournisseur.
Vous pouvez le télécharger et l'installer avec la commande suivante :
wget https://dl.eff.org/certbot-auto mv certbot-auto /usr/local/bin/certbot-auto chmod 0755 /usr/local/bin/certbot-auto
Une fois le Certbot installé, exécutez la commande suivante pour obtenir et installer un certificat SSL pour votre site Web :
certbot-auto --nginx -d yourdomain.com
La commande ci-dessus installera d'abord toutes les dépendances requises sur votre serveur. Une fois installé, il vous sera demandé de fournir une adresse e-mail et d'accepter les conditions d'utilisation, comme indiqué ci-dessous :
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N
Tapez N si vous ne souhaitez pas partager votre e-mail avec l'EFF, puis appuyez sur Entrée pour continuer. Une fois le certificat installé, vous devriez voir la sortie suivante :
Obtaining a new certificate Performing the following challenges: http-01 challenge for yourdomain.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/yourdomain.com.conf Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/yourdomain.com.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://yourdomain.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=yourdomain.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/yourdomain.com/privkey.pem Your cert will expire on 2020-08-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Maintenant, votre site Web est sécurisé avec Let's Encrypt SSL. Vous pouvez tester votre certificat SSL à l'aide d'un outil en ligne.
Étape 6 :Accédez à votre site Web
Maintenant, ouvrez votre navigateur Web et accédez à votre site Web en toute sécurité à l'aide de l'URL https://yourdomain.com
.
Vous devriez voir la page suivante :
Dans la page ci-dessus, vous devriez pouvoir voir que le site est correctement sécurisé, généralement avec une icône de cadenas vert sur le bord gauche de la barre d'adresse.
Étape 7 :Configurer le renouvellement automatique
Maintenant que nous avons installé Let's Encrypt sur notre VPS CentOS 8, nous devons nous assurer que notre certificat reste renouvelé et valide.
Par défaut, les certificats Let's Encrypt sont valides pendant 90 jours. Il est recommandé de renouveler le certificat avant son expiration, car un certificat expiré donnera aux utilisateurs un avertissement de sécurité lorsqu'ils essaieront de visiter votre site Web.
Vous pouvez tester le processus de renouvellement manuellement avec la commande suivante.
certbot-auto renew --dry-run
La commande ci-dessus vérifiera automatiquement les certificats actuellement installés et tentera de les renouveler s'ils sont à moins de 30 jours de la date d'expiration.
Vous pouvez également ajouter un cronjob pour exécuter automatiquement la commande ci-dessus deux fois par jour.
Pour cela, éditez le fichier crontab avec la commande suivante :
crontab -e
Ajoutez la ligne suivante :
* */12 * * * root /usr/local/bin/certbot-auto renew >/dev/null 2>&1
Vous pouvez toujours modifier l'intervalle de ce cronjob si deux fois par jour est trop souvent en ajustant les valeurs à l'extrême gauche.
Enregistrez et fermez le fichier. Désormais, votre certificat sera renouvelé régulièrement. Toutes nos félicitations! Vous avez maintenant installé Let's Encrypt sur votre serveur CentOS 8 avec Nginx.
La configuration d'un site Web avec tous les plugins et fonctionnalités dont vous avez besoin peut prendre beaucoup de temps et d'efforts que vous pourriez consacrer à la gestion de votre entreprise. Si vous utilisez l'un de nos services d'hébergement CentOS 8 gérés, nous ferons tout le gros travail pour vous. De la maintenance du serveur aux demandes d'installation et de configuration, nous couvrons tout ce dont vous avez besoin pour maintenir votre serveur en parfait état, le tout sans frais supplémentaires.
Si ce tutoriel vous a aidé à configurer votre site Web Nginx avec SSL sur votre VPS CentOS 8, pensez à laisser un commentaire dans notre section commentaires ou partagez ce message sur les réseaux sociaux en utilisant nos raccourcis de partage. Merci.