GNU/Linux >> Tutoriels Linux >  >> Linux

Comment gérer les certificats Lets Encrypt SSL/TLS avec certbot

Chiffrons est une autorité de certification (CA) automatisée et ouverte exploitée par l'Internet Security Research Group (ISRG) et fondée par l'Electronic Frontier Foundation (EFF), la Mozilla Foundation et d'autres. Il fournit des certificats SSL/TLS gratuits qui sont couramment utilisés pour chiffrer les communications à des fins de sécurité et de confidentialité, le cas d'utilisation le plus notable étant HTTPS. Let's Encrypt s'appuie sur le protocole ACME (Automatic Certificate Management Environment) pour émettre, révoquer et renouveler les certificats. Certbot est un utilitaire gratuit et open-source principalement utilisé pour gérer les certificats SSL/TLS de Let's Encrypt autorité de certification. Il est disponible pour la plupart des systèmes d'exploitation UNIX et de type UNIX, y compris GNU/Linux, FreeBSD, OpenBSD et OS X. Ce guide fournira une introduction indépendante de la plate-forme à l'utilisation de certbot.

REMARQUE : Comme certbot est un travail en cours, certaines fonctionnalités ou comportements décrits dans ce guide peuvent différer dans les versions plus anciennes ou futures.

Exigences

  • Un nom de domaine enregistré avec un enregistrement A pointant vers votre adresse IPv4. `www.example.com` sera utilisé comme exemple.
  • Accès à un shell privilégié.

Concepts généraux

Modes de fonctionnement

L'utilisation de certbot pour activer HTTPS peut être divisée en deux parties :l'authentification et l'installation. La première nécessite de résoudre un défi et d'enregistrer le certificat et d'autres fichiers. L'étape d'installation consiste à configurer et à sécuriser le serveur Web. Certbot peut effectuer automatiquement les deux, avec la sous-commande run. Les sous-commandes certonly et install concernent respectivement les étapes d'authentification et d'installation.

Certbot inclut également des fonctionnalités de renouvellement et de révocation de certificat.

Défis

L'obtention d'un certificat Let's Encrypt consiste à résoudre un défi de validation de domaine émis par un serveur ACME (Automatic Certificate Management Environment). Ce défi vérifie votre propriété du ou des domaines pour lesquels vous essayez d'obtenir un certificat. Différents types de challenge existent, le plus couramment utilisé étant HTTP-01. Comme son nom l'indique, il utilise le protocole HTTP. Bien que les serveurs HTTP puissent être configurés pour utiliser n'importe quel port TCP, ce défi ne fonctionnera que sur le port 80 en raison de mesures de sécurité. DNS-01 est un autre type de défi moins populaire basé sur la résolution DNS. Notez que les certificats génériques ne peuvent pas être obtenus via le challenge HTTP-01. Ce guide se concentrera initialement sur HTTP-01.

Plugins

Certbot s'appuie sur des plugins pour effectuer l'authentification et l'installation. Les plugins tels que webroot et standalone n'effectuent que l'authentification, tandis que d'autres tels que les plugins Apache et Nginx sont conçus pour obtenir et installer automatiquement des certificats (c'est-à-dire la configuration du serveur Web). D'autres plugins incluent plusieurs plugins DNS spécifiques au fournisseur pour l'authentification DNS-01. La plupart des plugins certbot sont installés séparément, à l'exception des plugins webroot et autonomes qui sont intégrés.

Installation de Certbot

La plupart des distributions Linux fournissent certbot dans leurs référentiels officiels. Vous trouverez ci-dessous des instructions d'installation pour les plates-formes largement utilisées.

Debian et Ubuntu :

apt update
apt install -y certbot

CentOS 7 :

yum install -y certbot

Fedora et CentOS 8 :

dnf install -y certbot

Arch Linux :

pacman -Sy certbot

FreeBSD :

pkg install py36-certbot

OpenBSD 6.0 et versions ultérieures :

pkg_add certbot

MacOS (homebrew requis) :

brew install letsencrypt

Autre :

Si un package certbot n'est pas disponible pour votre plate-forme, vous pouvez utiliser le script wrapper officiel certbot-auto pour installer automatiquement certbot sur votre système. Il peut être téléchargé ici.

Utiliser Certbot

Certificats de liste

Pour afficher une liste des certificats gérés par certbot sur votre serveur, lancez la commande :

certbot certificates

Obtention d'un certificat pour la configuration manuelle

Si vous choisissez de configurer manuellement votre serveur Web, l'obtention d'un certificat peut se faire de deux manières. Soit en donnant à certbot l'accès au répertoire racine web de votre serveur (c'est-à-dire le plugin webroot), soit en déployant un serveur web autonome temporaire sur le port 80 (c'est-à-dire le plugin autonome). Ce dernier plugin est utile dans les cas où l'intégration avec votre serveur Web existant est impossible ou non souhaitée. Pour plus de commodité et des renouvellements plus simples, soyez cohérent avec le plugin utilisé.

Utiliser un serveur Web existant

Pour utiliser votre serveur Web existant, assurez-vous qu'il s'exécute et écoute sur le port 80 avant d'exécuter la commande suivante

certbot certonly --webroot

Vous serez invité à saisir, entre autres informations, votre ou vos noms de domaine et le chemin d'accès à votre racine Web, qui est `/var/www/html/` par défaut sur la plupart des systèmes Linux. Vous pouvez également spécifier les informations requises en tant qu'arguments de commande. Par exemple :

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m [email protected] -d www.example.com

Utilisation du serveur Web autonome

Afin d'utiliser le serveur autonome, assurez-vous d'abord de la disponibilité du port 80. Vous pouvez vérifier tous les processus liés à ce port en utilisant :

ss -lntp 'sport = 80'

Si nécessaire, arrêtez le service/processus incriminé avant de continuer. Puis lancez la commande :

certbot certonly --standalone

Une fois le certificat délivré, vous devrez configurer votre serveur Web manuellement. Les fichiers pertinents se trouvent dans /etc/letsencrypt/live/votre_domaine.

Installation HTTPS interactive

Comme mentionné précédemment, certbot peut automatiser l'ensemble du processus de configuration HTTPS, y compris la configuration du serveur Web. Les plugins sont disponibles pour Apache et Nginx, et peuvent devoir être installés en tant que package séparé. Installez le plug-in certbot spécifique à votre serveur Web, puis exécutez `certbot run --PLUGIN_NAME`. Nous allons démontrer l'ensemble du processus pour Apache sur un système Debian 10. Le processus pour Nginx est similaire.

apt install -y python-certbot-apache
certbot run --apache

En supposant que votre serveur Web est déjà configuré pour votre ou vos noms de domaine, certbot analysera la configuration existante et vous invitera à choisir le ou les noms de domaine pour lesquels HTTPS doit être activé. Si votre serveur Web n'est pas configuré ou si certbot ne parvient pas à détecter votre ou vos noms de domaine, saisissez simplement votre ou vos noms de domaine manuellement lorsque vous y êtes invité. Par exemple :

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot créera un nouveau fichier de configuration Apache pour votre nouvel hôte virtuel HTTPS et vous demandera si le trafic HTTP doit être redirigé vers HTTPS. Sauf si vous avez de bonnes raisons de ne pas le faire, vous devez activer la redirection vers 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): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Renouveler les certificats

Renouvellement manuel

Pour renouveler vos certificats avec certbot, vous pouvez utiliser la sous-commande refresh. Lors du renouvellement, certbot utilisera les mêmes plugins et options que ceux utilisés pour l'émission d'origine. Les certificats ne sont renouvelés que s'ils expirent dans moins de 30 jours. Cette sous-commande peut donc être utilisée aussi souvent que vous le souhaitez, car elle ne prendra aucune mesure si les certificats ne sont pas proches de leur date d'expiration. La commande est simplement :

certbot renew

Si le plug-in autonome a été utilisé pour émettre un certificat, vous devrez arrêter votre serveur Web pour que le renouvellement réussisse. Vous pouvez accomplir cela en utilisant des crochets. Par exemple, si le système exécute Apache, la commande serait :

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Renouvellement automatique

De nombreuses distributions ont activé les renouvellements automatiques par défaut, soit via des temporisateurs systemd, soit via des tâches cron. Vous pouvez vérifier les minuteurs systemd avec :

systemctl list-timers

Et pour les tâches cron utilisant :

ls /etc/cron*

Si le plug-in Webroot a été utilisé pour l'émission, les renouvellements automatisés devraient réussir tant que votre serveur Web est en cours d'exécution. Avec le plugin autonome, cependant, la commande de renouvellement automatisé par défaut échouera si un serveur Web est en cours d'exécution, car certbot ne pourra pas se lier au port 80. Le modifier avec l'ajout de crochets, comme indiqué ci-dessus, est donc nécessaire.

Révocation de certificats

La révocation d'un certificat peut être obtenue en spécifiant le chemin ou le nom du certificat :

certbot revoke --cert-name cert_name
(OR)
certbot revoke --cert-path /path/to/cert.pem

Par exemple :

certbot revoke --cert-name www.example.net

Après avoir exécuté la sous-commande revoke, certbot vous demandera si les fichiers de certificat doivent être supprimés. Si vous choisissez de ne pas les supprimer, le certificat révoqué sera renouvelé lors du prochain renouvellement. Plusieurs options explicites peuvent être transmises à la sous-commande revoke :

  • --delete-after-revoke (invite le choix de l'utilisateur par défaut)
  • --no-delete-after-revoke (invite l'utilisateur à choisir par défaut)
  • --raison [unspecified,keycompromise,affiliationchanged,superseded,cessationofoperation] (Par défaut :non spécifié)

Certificats génériques

Un seul certificat générique peut être utilisé pour identifier plusieurs sous-domaines, au lieu de séparer les certificats réguliers. Pour obtenir un certificat générique, le challenge DNS-01 doit être utilisé. Bien que plusieurs plugins spécifiques au fournisseur qui automatisent le processus d'authentification ACME soient disponibles, nous expliquerons le processus manuel et indépendant du fournisseur. L'accès aux serveurs de noms de votre domaine est nécessaire.

Utilisez la commande suivante pour demander un certificat générique :

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot affichera une valeur qui doit être déployée dans un enregistrement DNS TXT. Cet enregistrement TXT sert de validation de propriété nécessaire.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Vous devrez créer l'enregistrement spécifié dans votre panneau de configuration DNS avant de continuer. Une fois l'enregistrement créé, attendez quelques minutes avant d'appuyer sur Entrée, ce qui déclenche le serveur ACME pour le vérifier. Dans certains cas, un temps d'attente plus long peut être nécessaire pour que le nouvel enregistrement se propage correctement et soit accessible. En cas de succès, le certificat, la chaîne et la clé privée seront enregistrés sous /etc/letsencrypt/live/example.com/.

Références et informations supplémentaires

  • Référentiel officiel Certbot Github
  • Environnement de gestion automatique des certificats (ACME) RFC 8555
  • Documentation Certbot EFF
  • Page de manuel Certbot(1)

Linux
  1. Comment sécuriser vos services de messagerie Linux avec SSL/TLS

  2. Comment sécuriser un compte compatible cPanel avec un certificat SSL Lets Encrypt

  3. Comment sécuriser un compte compatible cPanel avec un certificat Sectigo SSL

  4. Comment sécuriser le nom d'hôte Plesk sur le port 8443 avec un certificat SSL

  5. Comment sécuriser les connexions avec des certificats SSL/TLS

Comment installer Let's Encrypt SSL avec LEMP sur AlmaLinux 8

Comment renouveler automatiquement les certificats SSL Let's Encrypt

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

Comment surveiller les certificats SSL/TLS avec Checkmk

Comment sécuriser Nginx avec le certificat SSL Let's Encrypt