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

Sécurisez Apache avec Let's Encrypt sur CentOS 7 - Processus étape par étape ?

Les certificats SSL sont utilisés pour fournir une sécurité supplémentaire aux utilisateurs accédant à votre application. Il cryptera le trafic entre le serveur et le client. Let's Encrypt est une autorité de certification (CA). Il fournit des certificats TLS/SSL gratuits pour activer le protocole HTTPS crypté sur les serveurs Web. C'est une autorité de certification automatisée, gratuite et ouverte.

Chez LinuxAPT, dans le cadre de nos services de gestion de serveur, nous aidons régulièrement nos clients à effectuer des requêtes Let's Encrypt associées.

Dans ce contexte, nous verrons comment sécuriser apache avec Let's Encrypt sur CentOS 7 en installant le certificat SSL Let's Encrypt gratuit.


Comment installer Let's Encrypt sur CentOS 7 ?

Les certificats SSL Let's Encrypt sont valides pendant 90 jours à compter de la date d'émission. En règle générale, les certificats SSL Let's Encrypt sont aujourd'hui approuvés par tous les principaux navigateurs.

Avant de vous lancer dans cette procédure d'installation, assurez-vous que les conditions préalables suivantes sont remplies :

  • Un système fonctionnant sous CentOS 7 avec un utilisateur non root avec des privilèges sudo.
  • Apache doit être installé et configuré, comme indiqué dans ce tutoriel.
  • Avoir un hôte virtuel apache pour votre domaine, comme mentionné dans ce tutoriel.
  • Votre nom de domaine doit pointer vers l'adresse IP de votre serveur.


1. Installez le client Certbot

Commencez par installer le package client Certbot sur votre serveur pour obtenir un certificat SSL Let's Encrypt. Le Certbot est un outil utilisé pour obtenir des certificats SSL de Let's Encrypt et activer automatiquement HTTPS sur votre serveur.

Le package certbot est fourni par EPEL. Nous devons donc activer le référentiel EPEL en tapant :

$ sudo yum install epel-release

Installez maintenant le client certbot en exécutant la commande suivante :

$ sudo yum install httpd mod_ssl python-certbot-apache

Vérifier l'installation du certbot par type :

$ certbot --version

Si l'installation réussit, il vous montrera la version de certbot.


2. Configurer le pare-feu

Si vous n'utilisez pas de pare-feu, vous pouvez passer à autre chose.

Pour installer SSL sur votre serveur Web, vous devez vous assurer que les ports 80 et 443 sont ouverts dans votre pare-feu. Vous pouvez ouvrir des ports à l'intérieur de firewalld en utilisant les commandes suivantes :

$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https
$ sudo firewall-cmd --runtime-to-permanent

Si sur votre serveur iptables est en cours d'exécution, vous devez exécuter les commandes ci-dessous pour activer le trafic sur le port 80 et le port 443 :

$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT


3. Configurer Let's Encrypt SSL sur Apache

Maintenant que tout est prêt, nous allons demander à obtenir un certificat SSL de Let's Encrypt. Demander à l'aide de certbot est un processus très simple. Let's Encrypt validera la propriété du domaine et en cas de succès, il émettra un SSL pour un domaine demandé. Il existe plusieurs façons d'obtenir un certificat Let's Encrypt via des plugins. Exécutez la commande ci-dessous pour demander SSL :

$ sudo certbot --apache -d example.com -d www.example.com

Dans la commande ci-dessus, il demandera un certificat SSL pour les domaines example.com et www.example.com.

Si vous exécutez certbot pour la première fois, il vous demandera d'entrer une adresse e-mail, qui peut être utilisée pour envoyer des alertes par e-mail liées au renouvellement et à l'expiration SSL. Il vous demandera également d'accepter les conditions d'utilisation.

Après cela, certbot communiquera avec le serveur Let's Encrypt, puis lancera un défi pour vérifier que vous possédez le domaine pour lequel vous demandez un certificat.

Si la validation a réussi, il vous demandera comment vous souhaitez configurer vos paramètres HTTPS :

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Sélectionnez votre choix et passez à l'étape suivante. Nous vous recommandons de choisir l'option Rediriger si vous ne souhaitez pas modifier le fichier de configuration manuellement.

À la fin, il vous montrera un message réussi.

Enfin, votre domaine est sécurisé avec le certificat SSL Let's Encrypt. Vous pouvez vérifier en visitant votre site avec le protocole HTTPS.


Autres paramètres SSL sécurisés pour Apache

La configuration SSL par défaut de CentOS avec la version Apache est obsolète, elle est donc moins sécurisée et crée des problèmes de sécurité. Nous devons donc modifier certains paramètres pour le rendre plus sécurisé.

Pour configurer des options SSL plus sécurisées, ouvrez le fichier ssl.conf :

$ sudo vi /etc/httpd/conf.d/ssl.conf

Tout d'abord, vous devez trouver les lignes SSLProtocol et SSLCipherSuit dans le fichier et les commenter ou vous pouvez supprimer ces deux lignes :

# SSLProtocol all -SSLv2
. . .
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Now append the following lines after VirtualHost block in /etc/httpd/conf.d/ssl.conf file.
. . .
. . .
# Begin copied text
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11

Ensuite, enregistrez et fermez le fichier. Nous devons redémarrer le service Apache pour que les modifications prennent effet.

Exécutez la commande ci-dessous :

$ sudo systemctl restart httpd

Comment effectuer le renouvellement automatique du certificat SSL Let's Encrypt ?

Les certificats SSL Let's Encrypt sont valides pendant 90 jours, vous devez donc les renouveler avant leur expiration. Pour renouveler automatiquement les certificats avant leur expiration, nous allons créer une tâche cron qui s'exécutera deux fois par jour et renouvellera automatiquement tout certificat 30 jours avant son expiration.

Modifions le crontab pour créer un nouveau travail avec la commande ci-dessous :

$ sudo crontab -e

Ajoutez les lignes suivantes à la fin du fichier pour qu'il s'exécute deux fois par jour :

0 */12 * * * /usr/bin/certbot renew >> /var/log/le-renew.log

Enregistrez et fermez le fichier. Pour prendre effet, Apache sera automatiquement redémarré si des certificats sont renouvelés.

Vous pouvez tester le processus de renouvellement, vous pouvez utiliser la commande certbot suivie du commutateur –dry-run :

$ sudo certbot renew --dry-run

S'il n'y a pas d'erreur, cela signifie que le processus de renouvellement a réussi.


[Besoin d'une assistance urgente pour corriger les erreurs de configuration d'Apache ? Nous pouvons t'aider. ]


Cent OS
  1. Sécurisez Apache avec Lets Encrypt sur Ubuntu 20.04

  2. Sécurisez Nginx avec Lets Encrypt sur CentOS 7

  3. Installer phpMyAdmin avec Nginx sur CentOS 7 - Processus étape par étape ?

  4. Installer phpMyAdmin avec Apache sur CentOS 7 - Processus étape par étape ?

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

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

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

Sécurisez Nginx avec le certificat SSL Let's Encrypt sur Ubuntu 18.04

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 CentOS 8