Deux façons de couvrir plus d'un nom. Le générique couvre tout un niveau ; le certificat SAN énumère des noms précis. Avec Let's Encrypt ils coûtent la même chose à exploiter, et la différence est opérationnelle.

SAN - une liste de noms

sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com
  • Fonctionne avec la validation HTTP - aucune API DNS nécessaire.
  • Un nouveau sous-domaine impose une réémission, soit une seule commande.
  • Le certificat publie la liste des noms : chacun de vos sous-domaines est donc public.

Générique - tout un niveau

sudo certbot certonly --manual --preferred-challenges dns \
  -d example.com -d '*.example.com'
  • Couvre n'importe quel sous-domaine, y compris ceux qui n'existent pas encore.
  • Exige la validation DNS - le renouvellement demande donc un accès API chez votre fournisseur DNS, ou quelqu'un de présent tous les soixante jours.
  • Ne couvre qu'UN seul niveau : *.example.com ne couvre pas a.b.example.com.
  • Ne couvre pas le domaine nu - énumérez example.com aussi, comme ci-dessus.

La différence de sécurité qui tranche

Une clé générique vaut pour tous les sous-domaines. Posez-la sur cinq serveurs : la compromission d'un seul donne à un attaquant un certificat valable pour tous, y compris le sous-domaine de paiement. Un certificat SAN par serveur garde ce rayon d'explosion étroit.

Que choisir

  • Une poignée de sous-domaines sur un seul serveur - SAN. Validation plus simple et renouvellement plus simple.
  • Beaucoup de sous-domaines, ou engendrés par client - générique, avec validation DNS automatisée.
  • Des sous-domaines sur des serveurs différents - un certificat distinct pour chacun, quel qu'en soit le nombre.
sudo certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/cf.ini \
  -d example.com -d '*.example.com'
Automatisez dans les deux cas. Un défi DNS manuel tous les soixante jours est un renouvellement qui finira par être oublié - voyez les sous-domaines génériques.