nebino

HTTP-01 ou DNS-01 : obtenir un certificat TLS avec certbot

20 octobre 2026

Pour délivrer un certificat TLS, Let’s Encrypt vérifie que l’on contrôle bien le domaine. Deux défis sont courants : HTTP-01 et DNS-01. Le choix dépend de ce dont on a besoin : wildcard, ports ouverts, automatisation.

HTTP-01

Let’s Encrypt demande un fichier précis à l’adresse http://domaine/.well-known/acme-challenge/jeton. Certbot le dépose avec --webroot (un site déjà servi) ou en démarrant son propre serveur temporaire avec --standalone.

Contraintes : le port 80 doit être joignable depuis Internet, et ce défi ne permet pas de certificat wildcard.

DNS-01

Le défi consiste à publier un enregistrement TXT _acme-challenge.domaine contenant une valeur fournie par Let’s Encrypt. Aucun port à ouvrir, le serveur n’a même pas besoin d’être exposé, et le wildcard est possible.

Contrepartie : il faut pouvoir modifier la zone DNS, idéalement par une API pour automatiser le renouvellement. Les identifiants de cette API sont sensibles et doivent avoir des droits aussi limités que possible.

En résumé

Port 80 ouvert
HTTP-01 : oui. DNS-01 : non
Wildcard
HTTP-01 : non. DNS-01 : oui
Accès requis
HTTP-01 : le serveur web. DNS-01 : la zone DNS
Serveur exposé
HTTP-01 : obligatoire. DNS-01 : inutile

Les commandes

# HTTP-01 : un site déjà servi sur le port 80
certbot certonly --webroot -w /var/www/html -d exemple.fr -d www.exemple.fr

# DNS-01 : certificat wildcard avec le plugin DNS d'OVH
certbot certonly --dns-ovh --dns-ovh-credentials ~/.secrets/certbot/ovh.ini \
  -d exemple.fr -d "*.exemple.fr"

# Tester sans consommer les limites de Let's Encrypt
certbot certonly --dry-run --webroot -w /var/www/html -d exemple.fr

Points d’attention

  • Un certificat *.exemple.fr ne couvre pas exemple.fr lui-même : il faut demander les deux noms.
  • Le mode --manual ne se renouvelle pas tout seul : pour automatiser, utiliser un plugin DNS ou un hook d’authentification.
  • On peut déléguer _acme-challenge par un CNAME vers une zone dédiée, pour que les identifiants automatisés ne puissent modifier que cette zone.
  • Le fichier d’identifiants du plugin doit être lisible uniquement par son propriétaire (chmod 600).

Voir aussi : les labs réseau, où ces deux défis ont été pratiqués, hardening d’un serveur Debian

Sources

Retour au blog