GNU/Linux >> Tutoriels Linux >  >> Linux

Installer et utiliser l'utilitaire Lets Encrypt Certbot sur CentOS 7 avec Apache

Cet article décrit comment installer et utiliser l'utilitaire Let's Encrypt® Certbot sur un serveur CentOS® 7.

Qu'est-ce que Let's Encrypt ?

Let's Encrypt est une autorité de certification (CA) qui fournit des certificats SSL gratuits de 90 jours. Les détails suivants proviennent de leur page À propos :

Let's Encrypt est une autorité de certification gratuite, automatisée et ouverte, gérée pour le bénéfice du public. Il s'agit d'un service fourni par l'Internet Security Research Group (ISRG).

Nous fournissons aux utilisateurs les certificats numériques dont ils ont besoin pour activer HTTPS (SSL/TLS) pour les sites Web, gratuitement et de la manière la plus conviviale possible. Nous le faisons parce que nous voulons créer un Web plus sûr et plus respectueux de la vie privée.

Les principes clés derrière Let's Encrypt sont :

  • Gratuit  :Toute personne possédant un nom de domaine peut utiliser Let's Encrypt pour obtenir un certificat de confiance sans frais.
  • Automatique  :Un logiciel exécuté sur un serveur Web peut interagir avec Let's Encrypt pour obtenir un certificat sans difficulté, le configurer en toute sécurité pour son utilisation et prendre en charge automatiquement le renouvellement.
  • Sécurisé  :Let's Encrypt servira de plate-forme pour faire progresser les meilleures pratiques de sécurité TLS, à la fois du côté de l'autorité de certification et en aidant les opérateurs de sites à sécuriser correctement leurs serveurs.
  • Transparent  :Tous les certificats délivrés ou révoqués seront enregistrés publiquement et accessibles à tous.
  • Ouvrir  :Le protocole d'émission et de renouvellement automatique sera publié en tant que norme ouverte que d'autres pourront adopter.
  • Coopérative  :Tout comme les protocoles Internet sous-jacents eux-mêmes, Let's Encrypt est un effort conjoint au profit de la communauté, au-delà du contrôle d'une seule organisation.

Quelle est la différence entre Let's Encrypt et les autres certificats SSL ?

Les certificats SSL sont des clés qui aident à chiffrer les données de votre serveur. Les navigateurs Web ne reconnaissent que les certificats SSL qui ont été fournis par une autorité de certification bien connue, telle que DigiCert, GoDaddy, COMODO, etc. Toutes les CA bien connues et de confiance sont membres du CA/Browser Forum (cabforum.org) et suivent un ensemble strict d'exigences pour délivrer des certificats.

Il existe trois niveaux différents de certificats SSL :

  • Certificat de validation de domaine (DV) :Il s'agit d'un certificat SSL de base qui prouve la propriété du domaine. Aucune validation supplémentaire n'est nécessaire.

  • Certificat de validation organisationnelle (OV)  :Ce certificat prouve non seulement la propriété du domaine, mais également qu'une entreprise réelle, en règle avec une autorité gouvernementale, est propriétaire du domaine.

  • Certificat de validation étendue (EV) :Ce certificat va plus loin que le certificat OV en validant en outre que l'entreprise existe depuis au moins trois ans.

Sur le back-end, ce sont des différences importantes, et elles jouent un rôle majeur lorsque vous achetez un certificat auprès d'une autorité de certification, car vous devez passer par leur processus de validation.

Sur le front-end, il n'y a pas de différence visible entre les trois types de certificats. La fonctionnalité de navigateur utilisée pour différencier les différents niveaux de certificat est obsolète. Pour en savoir plus, consultez : Les certificats à validation étendue sont (vraiment, vraiment) morts

Let's Encrypt, une autorité de certification officielle du CA/Browser Forum, propose des certificats DV de base gratuits valables 90 jours à la fois. Ce qui rend Let's Encrypt unique, c'est son utilitaire Certbot, que vous pouvez installer sur un serveur Web pour émettre et gérer vos certificats SSL à l'aide de processus automatisés. L'utilisation du Certbot entraîne moins de maintenance et moins de maux de tête. La période de validité de 90 jours signifie que les clés de certificat sont cyclées plus souvent, ce qui offre une meilleure sécurité car il y a une fenêtre beaucoup plus petite d'une clé éventuellement composée.

Commencer

Cet article se concentre sur l'installation de Certbot sur la dernière version de CentOS 7. Le serveur utilisé dans cet exemple exécute la pile LAMP suivante :

  • CentOS Linux® version 7.8.2003 (Core)
  • PHP 7.4.8
  • MariaDB® 5.5.65
  • Apache® 2.4.6

Les instructions et les commandes de cet article fournissent les fonctions de base pour obtenir un certificat de Let's Encrypt. Certbot ne dépend pas d'une application Web pour s'exécuter, mais il nécessite un moyen de valider que vous contrôlez réellement le domaine. Cet article traite de la validation à l'aide de la méthode webroot, ce qui signifie que vous hébergez le domaine pour lequel vous avez besoin d'un certificat sur le serveur sur lequel vous avez installé Certbot.

Important :Les instructions de l'article utilisent une configuration Apache par défaut pour un seul site sur le serveur. Votre configuration peut varier en fonction de votre configuration Apache.

Installer Certbot

Après avoir configuré votre serveur pour servir votre page Web, utilisez la commande suivante pour installer Certbot :

[root@leexample-centos7 ~]# yum install certbot

Certbot nécessite les dépendances suivantes :

=================================================================================================================================
 Package                                   Arch                    Version                           Repository             Size
=================================================================================================================================
Installing:
 certbot                                   noarch                  1.6.0-1.el7                       epel                   44 k
Installing for dependencies:
 pyOpenSSL                                 x86_64                  0.13.1-4.el7                      base                  135 k
 python-ndg_httpsclient                    noarch                  0.3.2-1.el7                       epel                   43 k
 python-requests-toolbelt                  noarch                  0.8.0-3.el7                       epel                   78 k
 python-zope-component                     noarch                  1:4.1.0-5.el7                     epel                  228 k
 python-zope-event                         noarch                  4.0.3-2.el7                       epel                   79 k
 python-zope-interface                     x86_64                  4.0.5-4.el7                       base                  138 k
 python2-acme                              noarch                  1.6.0-1.el7                       epel                   81 k
 python2-certbot                           noarch                  1.6.0-1.el7                       epel                  374 k
 python2-configargparse                    noarch                  0.11.0-2.el7                      epel                   31 k
 python2-future                            noarch                  0.18.2-2.el7                      epel                  806 k
 python2-josepy                            noarch                  1.3.0-2.el7                       epel                   89 k
 python2-mock                              noarch                  1.0.1-10.el7                      epel                   92 k
 python2-parsedatetime                     noarch                  2.4-6.el7                         epel                   78 k
 python2-pyrfc3339                         noarch                  1.1-3.el7                         epel                   16 k
 python2-six                               noarch                  1.9.0-0.el7                       epel                  2.9 k
 pytz                                      noarch                  2016.10-2.el7                     base                   46 k

Transaction Summary
=================================================================================================================================

Demander un nouveau certificat en utilisant Certbot

Avec Certbot installé, vous pouvez demander un certificat à Let's Encrypt. Avant de continuer, prenez note des éléments suivants :

  • Les domaines que vous demandez. Vous pouvez demander jusqu'à 100 domaines sur un seul certificat Let's Encrypt.

  • L'emplacement du ou des répertoires racine des documents de votre site. Vous avez besoin de ces informations pour le certbot commande pour installer le fichier txt pour validation. Si vous ajoutez plusieurs domaines qui pointent vers différents répertoires, vous devez tous les lister dans la commande.

  • Vous devez autoriser l'accès au /.well-known/acme-challenge/ répertoire.

  • Vous devez exclure le /.well-known/acme-challenge/ répertoire à partir d'une redirection forcée HTTP vers HTTPS.

Remarque : La première fois que vous exécutez Certbot, il vous invite à saisir votre adresse e-mail et à accepter les conditions d'utilisation.

Exécutez la commande suivante avec vos coordonnées pour demander un certificat :

[root@leexample-centos7 ~]# certbot certonly --webroot -w /var/www/vhosts/example.com -d example.com -d www.example.com

Une explication des éléments de commande suit :

  • certonly :un indicateur qui indique de ne délivrer qu'un certificat et de ne rien faire d'autre. La commande n'effectue aucune configuration d'application Web.
  • --webroot :indique à Certbot d'utiliser un répertoire Web spécifié, chacun séparé par le -w drapeau.
  • -d :spécifie le domaine à demander. Vous devez avoir -d drapeau pour chaque domaine que vous voulez sur le certificat.

Remarque : Si vous souhaitez couvrir à la fois le www et non-www versions d'un domaine sur un seul certificat, vous devez utiliser un -d drapeau pour chacun.

Après avoir entré la commande, la sortie suivante s'affiche :

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for letest.mccrocklin.space
Using the webroot path /var/www/vhosts/example.com for all unmatched domains.
Waiting for verification...

S'il n'y a aucun problème avec la validation, le résultat suivant s'affiche :

Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot 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

Emplacements des fichiers de certificat

Certbot, par défaut, installe les certificats dans /etc/letsencrypt/live// .

<domain.tld> est toujours le premier domaine que vous définissez lors de l'exécution du certbot commande. Gardez cela à l'esprit lorsque vous configurez votre hôte virtuel ou vos blocs de serveur pour qu'ils pointent vers les fichiers de certificat.

Vous pouvez vous attendre à voir les fichiers suivants dans le répertoire :

[root@leexample-centos7 ~]# ls -al /etc/letsencrypt/live/example.com
total 12
drwxr-xr-x. 2 root root 4096 Aug  1 13:35 .
drwx------. 3 root root 4096 Aug  1 13:35 ..
lrwxrwxrwx. 1 root root   47 Aug  1 13:35 cert.pem -> ../../archive/example.com/cert1.pem
lrwxrwxrwx. 1 root root   48 Aug  1 13:35 chain.pem -> ../../archive/example.com/chain1.pem
lrwxrwxrwx. 1 root root   52 Aug  1 13:35 fullchain.pem -> ../../archive/example.com/fullchain1.pem
lrwxrwxrwx. 1 root root   50 Aug  1 13:35 privkey.pem -> ../../archive/example.com/privkey1.pem
-rw-r--r--. 1 root root  692 Aug  1 13:35 README

Notez que tous ces fichiers sont des liens symboliques. Ceci est important pour le processus de renouvellement automatisé, décrit dans la section Renouvellement suivante. Notez les noms de fichiers suivants et leurs utilisations :

  • cert.pem est le certificat.
  • chaîne.pem est le pack CA.
  • chaîne complète.pem est le certificat, suivi du bundle CA.
  • privkey.pem est la clé privée.

Configurer Apache

Utilisez les commandes suivantes pour configurer Apache :

  1. Dans la configuration Apache par défaut, ajoutez les lignes suivantes dans /etc/httpd/conf.d/ssl.conf :

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCACertificateFile /etc/letsencrypt/live/example.com/chain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    
  2. Enregistrez les modifications et quittez.

  3. Exécutez la commande suivante pour effectuer une vérification de la syntaxe :

    httpd -t
    
  4. Si vous obtenez Syntax OK , puis exécutez la commande suivante pour recharger Apache :

    systemctl reload httpd
    

Renouveler vos certificats

Les certificats Let's Encrypt ont une durée de vie de 90 jours. Ainsi, lorsque vous devez renouveler de nombreux certificats demandés via l'utilitaire Certbot, le cycle de renouvellement fréquent peut être décourageant.

Heureusement, Certbot dispose d'une fonction de renouvellement intégrée qui s'en charge pour vous. Cependant, il ne s'exécute pas automatiquement, vous devez donc le programmer pour qu'il s'exécute en tant que cron travail. Le processus de renouvellement Cerbot utilise les étapes suivantes :

  1. La commande, certbot renew , lance le processus.

  2. Certbot vérifie tous les certificats qui ont été émis et installés sur votre serveur. Il recherche spécifiquement tous les certificats qui expireront dans les 30 prochains jours.

  3. Certbot tente de renouveler ces certificats arrivant à expiration en utilisant la même méthode de validation que celle utilisée pour la demande de certificat d'origine.

  4. Une fois le renouvellement réussi, Certbot crée de nouveaux fichiers dans /etc/letsencrypt/archive// répertoire, en incrémentant le nombre pour chaque itération de renouvellement, et met à jour les liens symboliques dans /etc/letsencrypt/live// Étant donné que les noms de fichier de certificat ne changent pas réellement, vous n'avez pas besoin de modifier le chemin d'accès au fichier dans les fichiers de configuration de bloc de serveur d'hôte virtuel ou. Cela rend le processus de renouvellement plus transparent.

Configurer la tâche cron

Il est important de noter que la fréquence réelle de la tâche cron dépend de la configuration de votre serveur. La fonction de renouvellement analyse uniquement les certificats existants jusqu'à ce qu'elle en trouve un qui expire dans les 30 prochains jours. Il est prudent de configurer la tâche cron pour qu'elle s'exécute une fois par jour pendant les périodes de faible trafic. Si vous avez de nombreux certificats Let's Encrypt qui ont été émis à des moments différents, il peut les attraper lorsqu'ils atteignent la marque des 30 jours.

Cependant, vous pouvez choisir de l'exécuter moins fréquemment. Par exemple, une fois par semaine à 3h du matin tous les dimanches.

Vous pouvez créer la tâche cron en utilisant la crontab ou Anacron de l'utilisateur root. Anacron garantit que la tâche cron s'exécute même si elle a été manquée pendant l'indisponibilité du serveur.

Utilisez les étapes suivantes pour créer la tâche cron :

  1. Confirmez le bon chemin en exécutant directement la commande :

    [root@leexample-centos7 ~]# which certbot
    /usr/bin/certbot
    
  2. Déterminez quelle méthode cron vous souhaitez utiliser :

    • Anacron :créer un nouveau fichier dans /etc/cron.weekly/ - vous pouvez le nommer quelque chose comme certbotrenew

    • Cron :utilisez crontab -e

  3. Créez l'entrée cron, telle que la suivante, dans la méthode de votre choix :

    0 3 * * 0 /usr/bin/certbot renew
    
  4. Enregistrez le fichier.

Conclusion

Let's Encrypt est une excellente alternative pour obtenir des certificats SSL gratuits pour vos domaines. Ces certificats sont des certificats DV, ce qui signifie qu'ils ne valident que la propriété du domaine. Cet article couvre les fonctions de base de l'utilitaire Let's Encrypt Certbot. Si vous avez besoin d'options supplémentaires et de fonctionnalités plus avancées, vous pouvez obtenir une assistance supplémentaire de la communauté Let's Encrypt :

  • Chiffrons
  • Chiffrons la documentation
  • Forum de la communauté Let's Encrypt

Linux
  1. Sécurisez Apache avec Lets Encrypt sur CentOS 7

  2. Comment installer Shopware avec NGINX et Lets Encrypt sur CentOS 7

  3. Comment installer WonderCMS avec Nginx et Lets Encrypt SSL sur CentOS 7

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

  5. Installer Apache et PHP sur CentOS 7

Comment installer Shopware 6 avec NGINX et Lets Encrypt sur CentOS 8

Comment installer PrestaShop avec Apache et Lets Encrypt SSL sur CentOS 8

Installez TaskBoard avec Apache et laissez Encrypt SSL sur Debian 11

Comment installer InvoicePlane avec Apache et Free Lets Encrypt SSL Certificate sur Debian 11

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