Outils pour utilisateurs

Outils du site


kb:crypto:letsencrypt

Let's Encrypt

Comprendre Let's Encrypt

Let's Encrypt est un Autorité de Certification qui est GRATUITE et qui permet de signer un certificat de façon automatique et quasi instantané.

Deux méthodes existent pour valider un certificat :

  1. Par requête HTTP : Lors de la demande de certificat, l'API va effectuer une requête HTTP sur la dites URL dans le répertoire /.well-known/acme-challenge d'un fichier très spécifique qu'il aura demandé de créer lors de la dites requête.
  2. Par requêtes DNS : Lors de la requête, l'API fera une requête TXT particulière sur le DNS. Celle-ci n'est soit pas automatique ou elle oblige que le serveur WEB puissent mettre à jour sa zone DNS. Bien que plus contraignante, elle permet depuis la version 2 de signer des certificats WildCard.

Pourquoi cette méthode

L'objectif de cette page est de générer et faire signer des certificats avec Let's Encrypt.
Cette méthode n'est pas la plus simple, mais elle permet de mettre en place DANE/TLSA et HPKP ainsi que d'avoir des certificats en ECC.

Pour cela, il faut juste le packet certbot/letsencrypt.

Cette méthode n'est pas éligible au renouvellement automatique de certbot, donc il faudra ajouter manuellement l'entrée en tache cron. La méthodologie, si suivie a la lettre, permet un gestion simple de ces certificats.

Génération du certificat

Pour chaque domaines, nous allons créer les dossiers où seront stocké les certificats et les clés:

# mkdir -p /etc/letsencrypt/wiki.virtit.fr/{live,archive}

puis on génère la clé privé:

# openssl ecparam -name prime256v1 -genkey -out /etc/letsencrypt/wiki.virtit.fr/live/private.key

Puis le certificat publique

# openssl req -new -subj "/CN=wiki.virtit.fr" -key /etc/letsencrypt/wiki.virtit.fr/live/private.key -nodes -out /etc/letsencrypt/wiki.virtit.fr/live/cert.csr

Ces certificats seront unique mais pensez à les renouveler de temps en temps :-).

Signature du certificat

Pour signer votre certificat, il faut lancer la commande suivante :

# certbot certonly --webroot -w /var/www/letsencrypt/ -d wiki.virtit.fr --csr /etc/letsencrypt/wiki.virtit.fr/live/cert.csr --cert-path /etc/letsencrypt/wiki.virtit.fr/live/cert.pem --chain-path /etc/letsencrypt/wiki.virtit.fr/live/chain.pem --fullchain-path /etc/letsencrypt/wiki.virtit.fr/live/fullchain.pem

Renouvellement du certificat

Pour renouveler le certificat, il faut déplacer le certificat, et les chaines de certificats.
Je vous conseil d'ajouter la tâche cron suivante :

0 2 1 * * root /bin/mv /etc/letsencrypt/wiki.virtit.fr/live/*.pem /etc/letsencrypt/wiki.virtit.fr/archive/ && /usr/bin/certbot certonly --webroot -w /var/www/letsencrypt/ -d wiki.virtit.fr --csr /etc/letsencrypt/wiki.virtit.fr/live/cert.csr --cert-path /etc/letsencrypt/wiki.virtit.fr/live/cert.pem --chain-path /etc/letsencrypt/wiki.virtit.fr/live/chain.pem --fullchain-path /etc/letsencrypt/wiki.virtit.fr/live/fullchain.pem

Il faudra adapter la dite commande avec le bon domaine.

La fonction post-hook ne fonctionne pas par cette méthode, rajoutez une tache cron quelques minutes plus tard pour reload le serveur Web

kb/crypto/letsencrypt.txt · Dernière modification: 2019/11/28 18:07 de beu