LINUX:LetsEncrypt

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour aux certificats


But

Si votre serveur est accessible depuis Internet et que vous proposez un service WEB par exemple, il vous faut acquérir un certificat publique auprès d'une Autorité de Certification (CA) officielle. Let's Encrypt en propose des gratuits.


Installation

Sous Linux (Fedora), on installe le logiciel avec la commande suivante:

dnf install certbot python3-certbot-apache 

Ici on va utiliser Apache comme serveur WEB (service HTTPD).


Prérequis

Un certain nombre de prérequis sont nécessaires:

  • un nom de domaine officiel
  • votre serveur doit être accessible depuis Internet
  • Apache doit être installé et doit s'exécuter
  • Apache doit présenter au moins un "VirtualHost" lié au nom de domaine officiel, celui-ci doit être configuré au niveau du DNS mondial. Voyez l'article suivant: Serveur visible sur Internet

Il est fortement conseillé de sauver votre configuration d'Apache se trouvant dans le répertoire "/etc/httpd" car elle sera adaptée automatiquement. Par défaut, votre configuration se trouve dans les répertoires "/etc/httpd/conf" et "/etc/httpd/conf.d".


Acquérir un certificat

On exécute la commande suivante:

certbot --apache

La première fois, on vous demande une adresse mail. Ce ne peut être une adresse mail interne. Let's Encrypt doit pouvoir vous envoyer un message par exemple en cas de dépassement du délais de validité.

Il présente une liste de vos "VirtualHost". Il suffit d'introduire le n° d'ordre de celui désiré.

Les certificats vont se stocker dans le répertoire "/etc/letsencrypt".

Par la même occasion, il va adapter votre configuration. Elle fait référence à un fichier de configuration que la commande a généré "/etc/letsencrypt/options-ssl-apache.conf". Il n'est pas nécessaire de le modifier ou de l'outrepasser. Par contre, vérifiez votre propre configuration et adaptez-la si nécessaire. C'est pour cette raison qu'on vous conseille de la sauver auparavant.


Vérification de l'état d'un certificat

Il existe un site WEB où l'on peut visualiser l'état et le contenu d'un certificat publique. Il faut aller à l'URL https://crt.sh/.


LINUX:Crt.sh.png


Sur cette page, vous introduisez votre nom de domaine ou de machine. Vous pouvez également y récupérer le certificat dans le cas, par exemple, où vous l'auriez effacé par erreur.


Révocation d'un certificat

Dans le cas d'un certificat compromis ou n'ayant plus de raison d'être, on passe par une étape de révocation. Cette révocation sera enregistrée directement sur le site de Let's Encrypt. Cet état est consultable sur le site "crt.sh" vu ci-dessus.

On exécute la commande de la forme suivante:

certbot revoke --cert-path /etc/letsencrypt/archive/votre.domaine/cert1.pem --key-path /etc/letsencrypt/archive/votre.domaine/privkey1.pem

Vous remplacez évidemment "votre.domaine" par le vôtre selon le nom du répertoire correspondant.


Détruire un certificat

Il se peut que vous n'ayez plus besoin d'un certificat après révocation. Pour l'éliminer, lancez la commande suivante:

certbot delete

Il vous est demandé d'introduire le n° d'ordre du certificat concerné selon la liste présentée.


Renouvellement des certificats via le CRON

La durée de validité est courte. Elle est de trois mois. Il faut donc veiller à les renouveler.

Heureusement, il existe une commande qui s'en charge:

certbot renew --apache

Les certificats seront renouvelés seulement s'il reste moins de 30 jours de validité.

On peut créer un script. On le place par exemple dans un répertoire "/manager/letsencrypt" et on le nomme par exemple "ssl.renew.bat". Par la même occasion, on relance Apache au cas où les certificats auraient été renouvelés.

Voici ce script:


#!/bin/bash
/usr/bin/certbot renew --apache
/usr/bin/systemctl restart httpd

On fait appel à ce script dans le Cron de Linux. On ajoute les lignes suivantes dans le fichier "/etc/crontab":


# letsencrypt renew
40 23 * * * root /manager/letsencrypt/ssl.renew.bat > /manager/letsencrypt/ssl.renew.log

Ici on l'appelle tous les jours pendant la nuit. Mais on pourrait ne l'appeler qu'une fois par semaine.


Renouvellement des certificats via le SYSTEMD

La durée de validité est courte. Elle est de trois mois. Il faut donc veiller à les renouveler.

Il existe un service via SYSTEMD qui fait cela à la place de passer par ce CRON.


Il est préférable de modifier le fichier "/etc/sysconfig/certbot". Modifiez les lignes:

POST_HOOK="--post-hook 'systemctl restart httpd'"
#POST_HOOK=""

afin de redémarrer le service "HTTPD" en cas de renouvellement des certificats.


Ensuite il faut activer et lancer le service de type "timer". La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.

systemctl enable certbot-renew.timer
systemctl start certbot-renew.timer
systemctl restart certbot-renew.timer

La commande suivante permet de visualiser son journal:

journalctl -u certbot-renew.service

ou

systemctl status certbot-renew.service


Remarque

Ces certificats sont utilisables dans d'autres contextes comme par un serveur de messagerie (postfix, dovecot).




retour aux certificats