Aller au contenu

Quels risques pour un certificat wildcard TLS

Un certificat wildcard TLS (Transport Layer Security), tel que *.domaine.tld, réduit le nombre de certificats à déployer, mais transforme une clé privée compromise en passe-partout pour une zone DNS (Domain Name System) entière. Le compromis est brutal : on gagne en commodité opérationnelle, on paie en rayon d’explosion et en perte de cloisonnement.

→ Lire l’explication complète de la marmotte

Le compromis du wildcard : moins d’objets, plus de blast radius

Section intitulée « Le compromis du wildcard : moins d’objets, plus de blast radius »

Un wildcard ne couvre qu’un niveau de sous-domaine. *.example.com couvre api.example.com et vpn.example.com, mais ni example.com ni admin.eu.example.com. Le nom nu doit être ajouté explicitement dans le certificat, généralement comme nom alternatif de sujet, ou SAN (Subject Alternative Name).

Cette limite syntaxique ne réduit pas le risque principal. Une clé privée capable de prouver l’identité de *.example.com peut être utilisée pour usurper n’importe quel service TLS de premier niveau sous cette zone, dès lors que le trafic peut être redirigé ou intercepté. Une compromission du frontal chargé de grafana.example.com devient alors potentiellement une compromission de sso.example.com, api.example.com et mail.example.com. Le certificat n’est pas compartimenté par l’application. Il ne sait pas que Grafana est censé rester dans son bocal.

La recommandation est donc nette : ne pas utiliser de wildcard pour des services ayant des niveaux de sensibilité, des propriétaires ou des frontières réseau différents. Un wildcard peut rester acceptable pour un groupe homogène de services éphémères, derrière le même plan de contrôle, avec la même équipe d’exploitation et la même exposition. Il est inacceptable pour mélanger identité, administration, messagerie, paiement, interfaces partenaires et applications ordinaires.

Les services d’identité méritent une frontière dédiée. Un certificat de *.example.com ne doit jamais résider sur un composant qui sert aussi un sous-domaine d’authentification fédérée ou d’administration. La page sur TLS et ses garanties détaille ce que le protocole protège sur le transport, pas ce que la réutilisation d’une même identité protège dans l’architecture.

Les certificats à SAN multiples posent le même problème quand ils réunissent des noms indépendants sous une seule clé. Le wildcard est plus dangereux parce qu’il anticipe des noms qui n’existent pas encore. Créer nouveau-service.example.com revient alors à étendre le périmètre protégé par une clé déjà largement distribuée. Cette dette arrive sans ticket, sans revue, et sans même la politesse d’un message d’erreur.

La clé privée est le secret critique. La copier dans un Secret Kubernetes, sur un répartiteur de charge, dans une machine virtuelle, dans un dépôt de configuration chiffré et sur un poste d’administration multiplie les chemins de compromission. Chiffrer le fichier au repos ne change pas ce fait : un processus qui termine TLS doit obtenir la clé en mémoire ou déléguer l’opération cryptographique.

Les attaques usuelles sont connues :

  • extraction depuis un hôte compromis, un dump mémoire, une sauvegarde ou un volume persistant ;
  • lecture d’un Secret d’orchestration par un compte de service trop large ;
  • interception lors de la distribution automatisée du certificat et de sa clé ;
  • émission frauduleuse par une autorité de certification, ou AC, après compromission du compte de gestion ou du mécanisme de validation de domaine ;
  • détournement DNS permettant de présenter le certificat légitime sur une infrastructure hostile ;
  • abus d’un frontal mutualisé où un seul administrateur peut lire les fichiers de clés de tous les services.

Une clé non exportable dans un HSM (Hardware Security Module) réduit fortement l’extraction directe, mais ne transforme pas le service TLS en licorne invulnérable. Un attaquant qui contrôle le processus autorisé à demander des signatures peut toujours faire servir un faux site tant que ce processus reste accessible. Le HSM empêche le vol de la clé, pas l’abus de la capacité à l’utiliser.

Les algorithmes comptent aussi. Une clé RSA (Rivest, Shamir, Adleman) compromise permet souvent de déchiffrer du trafic historique si des suites TLS anciennes sans confidentialité persistante ont été négociées. Avec TLS 1.3 et des échanges éphémères correctement configurés, le vol de la clé de certificat ne déchiffre pas rétroactivement les sessions capturées. Il permet en revanche l’usurpation future jusqu’à expiration ou révocation effective. Ce n’est pas une consolation, seulement une limitation de dégâts.

La validation de domaine par DNS mérite une protection distincte. Un jeton de validation placé dans une zone DNS administrée par une plateforme de développement, un fournisseur marketing ou un compte cloud trop partagé permet potentiellement d’émettre un wildcard. La délégation DNS est une délégation d’identité. La traiter comme un banal fichier de zone est une tradition tenace, au même titre que stocker les mots de passe dans un tableur nommé final_final_v3.

Cloisonnement DNS, clés et points de terminaison TLS

Section intitulée « Cloisonnement DNS, clés et points de terminaison TLS »

Le découpage doit suivre les frontières de confiance, pas l’arborescence esthétique. Une zone publique peut être séparée en apps.example.com, admin.example.com et id.example.com, avec des certificats et des mécanismes de validation indépendants. *.apps.example.com limite alors le rayon d’explosion aux applications ordinaires, sans inclure l’administration ou l’authentification.

Ce découpage ne vaut que si la délégation DNS et les comptes d’AC restent séparés. Créer trois sous-domaines dans la même zone, administrée par le même jeton omnipotent, améliore l’inventaire mais pas la résistance à une émission frauduleuse. Chaque frontière revendiquée doit correspondre à des droits distincts : modification DNS, émission, lecture de clés, déploiement et accès aux journaux.

Le principe à retenir est le suivant : une clé par frontière de compromission. Une frontière peut être un environnement, une classe de données, une zone réseau ou un niveau d’administration. Elle ne doit pas être une liste de services arbitraire dessinée à la veille d’un audit.

Les certificats individuels restent le meilleur choix pour les noms critiques et stables. Ils permettent de révoquer admin.example.com sans casser api.example.com, d’appliquer une clé non exportable réservée à un frontal, et de déléguer l’exploitation sans remettre les clés du royaume. Pour les architectures de services internes, préférer une PKI privée et l’authentification mutuelle décrite dans mTLS plutôt qu’un wildcard public recyclé partout.

Un wildcard public ne garantit ni l’identité du client, ni l’autorisation applicative, ni l’isolation entre locataires. TLS chiffre un flux et authentifie le nom présenté par le serveur. L’autorisation doit venir de l’application, d’un proxy d’identité ou d’un mécanisme de contrôle d’accès. Attacher un wildcard à chaque ingress n’est pas une architecture zero trust, même si la slide contient beaucoup de flèches bleues.

L’inspection doit vérifier les noms couverts, l’émetteur, les dates et la présence de mécanismes de révocation. La commande suivante interroge un service sans contourner la validation TLS locale. Elle permet notamment de détecter un certificat wildcard installé là où un certificat dédié était attendu.

Fenêtre de terminal
# Vérifier le certificat réellement présenté par api.example.com.
# -servername force l'indication du nom demandé pendant la négociation TLS.
# -verify_return_error échoue si la chaîne de certification n'est pas valide.
openssl s_client \
-connect api.example.com:443 \
-servername api.example.com \
-verify_return_error \
-showcerts </dev/null 2>/dev/null |
openssl x509 -noout \
-subject \
-issuer \
-dates \
-ext subjectAltName \
-ext authorityInfoAccess \
-ext crlDistributionPoints

La présence de DNS:*.example.com dans l’extension SAN doit déclencher une question d’architecture, pas un acquiescement automatique. Identifier ensuite tous les terminateurs TLS possédant cette clé, y compris les environnements de test, les nœuds de reprise et les exports de sauvegarde. Un inventaire fondé sur les seuls certificats visibles depuis Internet rate précisément les copies qui finiront dans une archive oubliée.

Révocation, rotation et reprise après compromission

Section intitulée « Révocation, rotation et reprise après compromission »

La révocation d’un wildcard ne se propage pas aux sessions déjà établies. Elle dépend aussi de la vérification par le client : OCSP (Online Certificate Status Protocol) et CRL (Certificate Revocation List) peuvent être indisponibles, ignorés ou mis en cache. Le stapling OCSP améliore la disponibilité de l’information de statut, mais ne force pas tous les clients à agir immédiatement.

En cas de compromission avérée, la séquence opérationnelle est stricte :

  1. générer une nouvelle clé, sans réutiliser la clé compromise ;
  2. émettre un certificat de remplacement ;
  3. déployer le remplacement sur tous les terminateurs TLS connus ;
  4. invalider ou supprimer les copies, montages, sauvegardes restaurables et droits d’accès associés ;
  5. révoquer l’ancien certificat ;
  6. rechercher les usages inattendus dans les journaux de déploiement, d’accès au gestionnaire de secrets et de DNS.

Révoquer avant de disposer d’un remplacement peut transformer un incident de sécurité en indisponibilité générale. Attendre la fenêtre de maintenance habituelle laisse une identité compromise active. La capacité de remplacement rapide doit donc être testée, avec des dépendances réalistes : droits AC, accès DNS, redémarrage des proxys, rechargement des secrets et surveillance des erreurs de négociation.

La clé doit être conservée dans un gestionnaire de secrets dont les accès sont journalisés, avec chiffrement par une clé de chiffrement de clés, ou KEK (Key Encryption Key), idéalement protégée par HSM. Les sauvegardes doivent chiffrer séparément les clés privées, restreindre la restauration et conserver une preuve d’accès. Une sauvegarde de clé wildcard est une copie de la capacité d’usurpation, pas un fichier administratif un peu sensible.

La supervision doit alerter sur l’expiration, les erreurs de chaîne, les changements d’empreinte de certificat et les émissions nouvelles dans les journaux de transparence des certificats. Pour un wildcard, surveiller aussi toute création DNS de premier niveau sous la zone couverte : un sous-domaine inattendu peut devenir un point d’usurpation exploitable avec une clé déjà exposée.

Sans cloisonnement par certificat distinct, une seule clé privée wildcard compromise devient un passe-partout pour toute la zone DNS couverte. Quiconque obtient cette clé peut usurper n’importe quel sous-domaine du motif, présenter un certificat valide pour des services qui n’ont jamais été visés et intercepter leurs connexions sans déclencher d’avertissement navigateur. Le rayon d’explosion suit alors le nombre de services qui partageaient le certificat, et non le service réellement touché. La révocation devient un événement global : il faut réémettre et redéployer partout en même temps, car une clé retirée ne coupe pas les sessions déjà établies ni les instances qui conservent l’ancien matériel. La commodité d’un objet unique à déployer se paie en perte de traçabilité, puisqu’un incident sur un sous-domaine n’est plus isolable des autres.

Un certificat permet à un site de prouver son nom pendant une connexion chiffrée. Il contient une partie publique, visible par tous, et dépend d’une clé privée qui doit rester secrète. Un certificat wildcard autorise plusieurs noms commençant par des mots différents, mais finissant tous par le même domaine. Par exemple, il peut couvrir à la fois un site d’images, une interface d’administration et un service de connexion.

Le problème apparaît quand la clé privée est copiée sur plusieurs machines. Si une personne malveillante obtient cette clé, elle peut se faire passer pour n’importe quel site couvert. Elle peut alors tromper des visiteurs si elle contrôle leur chemin réseau ou si elle dirige le nom du site vers son propre serveur. Le chiffrement ne bloque pas cette usurpation, car la clé volée est justement la preuve attendue.

La bonne défense consiste à ne pas mettre des services très différents sous le même certificat. Les services d’administration et de connexion doivent avoir leur propre certificat et leur propre clé. Il faut aussi limiter les personnes et les machines capables de lire la clé, surveiller les nouveaux certificats émis et préparer un remplacement rapide. Si la clé est volée, il faut en créer une nouvelle, installer le nouveau certificat partout, puis faire annuler l’ancien. L’annulation ne coupe pas forcément les connexions déjà ouvertes.

À lire aussi

Pages voisines

: les deux pages se citent l’une l’autre.