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 :
-
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
-
Enregistrez les modifications et quittez.
-
Exécutez la commande suivante pour effectuer une vérification de la syntaxe :
httpd -t
-
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 :
-
La commande,
certbot renew
, lance le processus. -
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.
-
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.
-
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 :
-
Confirmez le bon chemin en exécutant directement la commande :
[root@leexample-centos7 ~]# which certbot /usr/bin/certbot
-
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 commecertbotrenew
-
Cron :utilisez
crontab -e
-
-
Créez l'entrée cron, telle que la suivante, dans la méthode de votre choix :
0 3 * * 0 /usr/bin/certbot renew
-
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