Aller au contenu

Génération des certificats Let's Encrypt - DNS Challenge

Les certificats générés par Certbot sont stockés sur l'hôte dans le dossier :

./certificats/certbot

Ce dossier est monté dans le conteneur Nginx à l'emplacement :

/etc/letsencrypt

Ce choix permet de conserver la même arborescence que celle utilisée par une installation standard de Nginx avec Certbot. Cela facilite une éventuelle migration vers Nginx Control et permet également de conserver les liens symboliques créés par Certbot.

Historiquement, la génération des certificats avec un DNS Challenge était réalisée en dehors de Nginx Control. Il était alors nécessaire de configurer manuellement un conteneur Certbot dans le fichier compose.yml du stack.

Depuis la version 12.4, la génération des certificats DNS Challenge est directement intégrée à Nginx Control.

⚠️ Attention : seul le DNS Challenge a été testé en conditions de production.

Principe de fonctionnement

Un conteneur Certbot est démarré en permanence en parallèle de Nginx Control. Son rôle est uniquement de gérer le renouvellement des certificats existants.

Lorsqu'un nouveau certificat doit être généré, Nginx Control démarre un conteneur Certbot éphémère dédié à cette demande.

Le certificat généré est ensuite conservé dans le répertoire partagé :

./certificats/certbot

Il est ainsi immédiatement disponible pour Nginx via le montage /etc/letsencrypt.

Prérequis

Pour utiliser cette fonctionnalité, vous devez disposer :

  • d'un fournisseur DNS pris en charge par les plugins DNS de Certbot ;
  • d'une clé ou d'un token d'API permettant à Certbot de modifier automatiquement les enregistrements DNS ;
  • d'un domaine dont la gestion DNS est assurée par ce fournisseur.

L'utilisation d'une API DNS permet à Certbot de créer automatiquement les enregistrements nécessaires à la validation du challenge, sans avoir à intervenir manuellement lors de la génération ou du renouvellement du certificat.

Confiugration & utilisation

Cloudflare

Configuration

1 - Ouvrir le fichier ./config/certbot/cloudflare/credentials.ini

nano ./config/certbot/cloudflare/credentials.ini

2 - Dans le fichier rempalcer YOUR-API-TOKEN par votre clé d'API et enregistrer les modifications.

3 - Sur Nginx Control aller ADMINISTRATION / Configuration puis sur l'onglet Certbot - défi DNS et adapter la configuration si dessous et cliquer sur Sauvagrder.

enable: true
provider: cloudflare
email: user@domain.tld
credentials_host_path: /containers/nginx/config/certbot/cloudflare//credentials.ini
certs_host_path: /containers/nginx/certificats/certbot

Les varialbes contenant des chemins (path) est l'emplacement depuis hôte Docker.

4 - Aller ensuite sur le page SSL / Certbot et démarrer le conteneur DEFI DNS en charge du renouvellement.

Demander un certificat

Pour demander un certificat, rendez-vous dans la zone Émettre un ou plusieurs certificats.

Saisissez les noms DNS à inclure dans le certificat, par exemple :

*.example.com example.com

Vous pouvez saisir plusieurs noms DNS en les séparant par un espace.

Cliquez ensuite sur Générer.

Patientez quelques secondes pendant que Certbot effectue le challenge DNS et procède à l'émission du certificat.

Une fois l'opération terminée, le certificat est disponible dans Nginx Control et peut être utilisé dans vos hôtes virtuels.