Installer les certificats SSL de LetsEncrypt avec Certbot

Voici ma procédure pense-bête. L’idée est de migrer des virtualhosts Apache déja configuré vers LetsEncrypt avec un bon contrôle, à savoir:
– aucun changement automatique des fichiers de configuration des sites web
– un certificat par sous domaine

Installer le générateur de certificats SSL en suivant la doc sur https://certbot.eff.org/

Arrêter le serveur web:

# systemctl stop apache2

Lancer le générateur de certificats SSL:

# certbot certonly

Choisir l’option 3 : « Spinup a temporary webserver (standalone) »

Saisir le nom de domaine. Ex: « tuxicoman.jesuislibre.net »

Ca va créer un certificat dans /etc/letsencrypt/live/ . Le certificat est aussi copié dans /etc/letsencrypt/archive/ et une tache de renouvellement est ajoutée dans  /etc/letsencrypt/renewal/ . Comme ça vous savez quoi effacer si vous faites de la merde.

Dans les fichiers de virtualhosts Apache qui sont destinés à recevoir du SSL , vous devez mettre au moins les lignes suivantes :

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/tuxicoman.jesuislibre.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/tuxicoman.jesuislibre.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

Répéter l’opération pour tous les noms de domaine.

Pour lister les domaines du certificat:
# certbot certificates

On peut aussi ajouter des sous domaines au certificat.
# certbot certonly --cert-name domaine.net -d domaine.net -d sous1.domaine.net -d sous3.domaine.net

Redémarrer le serveur web:

# systemctl start apache2

Les certificats ont une durée de vie de 90 jours.

On va modifier la méthode de renouvellement pour utiliser Apache. Car sinon, la méthode « standalone » requiert que Apache soit éteint.

# grep -rl 'authenticator' /etc/letsencrypt/renewal/ | xargs sed -i "s/authenticator = standalone/authenticator = apache/g"

On peut ensuite vérifier que la procédure de renouvellement fonctionne:

# certbot renew --dry-run

Enlever « –dry-run » pour le faire réellement.

Mais en pratique vous n’aurez pas à vous en occuper. Vos certificats seront renouvelés automatiquement. Une tache journalière vérifie si vos certificats vont expirer et les renouvelle pour vous. Elle met son log dans /var/log/letsencrypt/letsencrypt.log

Par contre, je n’ai pas trouvé le code ou le crontab qui est responsable de cette tâche journalière. Ça m’intrigue… mais je suis sûr qu’un lecteur me donnera la solution ;)

9 réactions sur “ Installer les certificats SSL de LetsEncrypt avec Certbot ”

  1. HMA

    Personnellement, j’ai rajouté un
    /usr/local/bin/certbot-auto renew –noninteractive
    quotidien dans la crontab du root : je ne pense pas que l’installation de CertBot intègre quelque chose d’automatique et planifié pour le renouvèlement…

  2. bibi

    Pourquoi ne pas utiliser l’option –webroot qui évite de devoir couper ton serveur web ?

  3. Tuxicoman

    @HMA:
    Sur https://certbot.eff.org/#debianjessie-apache c’est bien indiqué « The Certbot packages on your system come with a cron job that will renew your certificates automatically before they expire. » donc tu n’as pas à le faire toi même.

    @ tintouli :
    Bien vu, c’est bien dans /etc/cron.d/certbot que se trouve la tache automatique

  4. gwalarn

    Pour le cron, si on utilise systemd c’est un cron à la systemd qui est réalisé:
    /etc/systemd/system/timers.target.wants/certbot
    Si on utilise un autre system d’init c’est /etc/cron.d/certbot qui réalise la tache de cron:
    0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e ‘sleep int(rand(3600))’ && certbot -q renew

  5. Ping Certbot - VKoehl

  6. Ping Certbot – VKoehl

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.