Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Compromission eMudhra : huit certificats TLS cassés, mettez à jour ca-certificates sur vos serveurs Linux

Publié le 23 octobre 2026 11 min de lecture 13 sections

Huit certificats intermédiaires eMudhra compromis

Le 17 octobre 2026, un chercheur en sécurité indépendant a découvert que huit certificats intermédiaires émis par l'autorité de certification indienne eMudhra (marque emSign) reposaient sur des clés privées si faibles qu'elles pouvaient être retrouvées en moins d'une seconde. Ces clés, générées sur la courbe elliptique NIST P-384, auraient dû être des nombres aléatoires de 384 bits. En réalité, leurs valeurs effectives étaient toutes inférieures à 256 : la plus faible valait 4 (source : Google Security Blog).

Quiconque pouvait tester les 256 possibilités et retrouver la clé privée, puis signer n'importe quel certificat SSL/TLS au nom d'eMudhra. Si vous administrez un VPS Linux ou un serveur dédié, votre système fait confiance à ces certificats numériques via le paquet ca-certificates. Tant que le trust store n'est pas mis à jour, des outils comme curl, wget, apt ou vos applications PHP, Python, Node.js et Go peuvent accepter un faux certificat de serveur signé avec ces clés compromises.

Rappel : la chaîne de confiance des certificats SSL/TLS

Le protocole SSL/TLS sécurise les échanges entre un client et un serveur web en deux temps : authentification du serveur (le client vérifie que le certificat de serveur est signé par une autorité de confiance) et chiffrement de la connexion (les données transitent chiffrées entre les deux machines). Chaque certificat SSL contient une clé publique et l'identité du nom de domaine qu'il protège.

La confiance repose sur une hiérarchie. Une autorité de certification (CA) racine signe un certificat intermédiaire, qui signe à son tour le certificat de serveur présenté au navigateur ou au client TLS. Si la clé privée d'un certificat intermédiaire est compromise, un attaquant peut fabriquer un certificat signé pour n'importe quel nom de domaine. Le navigateur ou le serveur qui fait confiance à la racine acceptera cette connexion comme sécurisée, sans avertissement. C'est exactement le scénario rendu possible par la faille eMudhra.

Les certificats concernés

Les huit intermédiaires compromis, tous créés lors d'une même cérémonie de clé le 30 avril 2025, se répartissent en six certificats TLS et deux certificats de signature de code :

Certificat intermédiaireTypeUsage
EM DV TLS CA - G3BTLS (Domain Validation)Certificat SSL pour un nom de domaine
EM DV TLS CA - G3CTLS (Domain Validation)Certificat SSL pour un nom de domaine
EM OV TLS CA - G3BTLS (Organization Validation)Certificat SSL d'organisation
EM OV TLS CA - G3CTLS (Organization Validation)Certificat SSL d'organisation
EM EV TLS CA - G3BTLS (Extended Validation)Certificat SSL à validation étendue
EM EV TLS CA - G3CTLS (Extended Validation)Certificat SSL à validation étendue
EM OV CS CA - G3BSignature de codeCertificat de signature numérique
EM OV CS CA - G3CSignature de codeCertificat de signature numérique

Les valeurs effectives des huit clés privées P-384 étaient : 4, 56, 66, 115, 155, 156, 230 et 237. Chaque intermédiaire possédait aussi une variante cross-signée par Sectigo (racine AAA Certificate Services), soit 16 certificats affectés au total. eMudhra estime qu'environ 30 000 certificats ont été émis par ces intermédiaires, dont 97 % via le protocole ACME (source : Kudelski Security).

Origine de la faille

D'après eMudhra, le problème provient d'un script de cérémonie de clé défaillant utilisé le 30 avril 2025. Le script a généré un second jeu de clés de test avec des valeurs triviales. Les libellés de ces clés de test ressemblaient trop à ceux des clés valides, et l'opérateur a signé les demandes de certificat (CSR) avec le mauvais jeu. Résultat : huit clés privées NIST P-384 dont la valeur tient dans un seul octet, exposées dans les certificats publics pendant environ 17 mois avant qu'un chercheur indépendant ne les repère. La vulnérabilité est référencée CVE-2026-111943.

La clé publique correspondante était bien une courbe P-384 valide en apparence, ce qui rendait la faille invisible à l'inspection visuelle du certificat de l'autorité intermédiaire. Seule une analyse numérique du scalaire privé (la valeur secrète derrière la clé publique) révélait que le chiffrement reposait sur un nombre ridiculement petit.

Chronologie de la réponse

Date (UTC)Événement
30 avril 2025Cérémonie de clé : les huit intermédiaires sont créés avec des scripts de génération défectueux
17 octobre 2026Le chercheur "Wayne" signale la faille à Mozilla, Apple, Google, Microsoft et eMudhra
18 octobre 2026eMudhra révoque les huit intermédiaires
19 octobre 2026Sectigo révoque les variantes cross-signées ; Apple bloque les certificats
20 octobre 2026Mozilla retire emSign ECC Root CA - G3 de NSS 3.131.1 ; Microsoft bloque les intermédiaires ; Google déploie une mise à jour CRLSet dans Chrome ; Ubuntu publie l'avis de sécurité USN-8944-1
21 octobre 2026Debian publie l'avis DSA-6572-1 ; Red Hat publie RHSB-2026-012

Vérifier si votre serveur Linux est concerné

Les navigateurs web (Chrome, Firefox, Safari, Edge) ont intégré le blocage automatiquement. En revanche, sur un serveur Linux administré en ligne de commande, c'est le paquet ca-certificates qui gère le trust store du système. Les serveurs web comme Apache ou Nginx, les services de base de données (MySQL, PostgreSQL), les serveurs de messagerie SMTP (Postfix, Exim) et tous les scripts qui établissent des connexions sécurisées TLS sortantes s'appuient sur ce trust store.

Ouvrez un terminal sur votre VPS ou serveur dédié et exécutez la commande suivante pour rechercher la présence de la racine emSign dans le magasin de certificats :

grep -r "emSign" /etc/ssl/certs/

Si la commande renvoie des résultats, votre serveur fait encore confiance aux certificats de l'autorité compromise. Vérifiez ensuite la version du paquet avec la commande suivante :

dpkg -l ca-certificates

Les versions corrigées sont 20260816ubuntu0.24.04.1 (Ubuntu 24.04), 20260816ubuntu0.22.04.1 (Ubuntu 22.04), 20260816ubuntu0.26.04.1 (Ubuntu 26.04) et 20250419+deb13u1 (Debian 13). Si votre version est antérieure, le correctif n'est pas encore installé.

Pour inspecter la chaîne de confiance d'un certificat distant, utilisez openssl s_client comme décrit dans notre guide vérifier un certificat TLS avec OpenSSL. Cette commande affiche le certificat de serveur, le certificat intermédiaire et la racine, ainsi que l'adresse IP du serveur distant et le nom de domaine du certificat.

Mettre à jour le paquet ca-certificates

Sur Ubuntu, les correctifs sont disponibles via les avis de sécurité USN-8944-1 (Ubuntu 22.04 à 26.10) et USN-8944-2 (Ubuntu 14.04 à 20.04). Sur Debian, le correctif est l'avis DSA-6572-1. Sur Red Hat Enterprise Linux, l'avis RHSB-2026-012 couvre RHEL 6 à 10. Ces mises à jour retirent la racine emSign ECC Root CA - G3 du trust store système, et la racine AAA Certificate Services (Sectigo) sur les versions antérieures à Ubuntu 22.04.

Connectez-vous en SSH à votre serveur et exécutez la commande suivante en ligne de commande :

sudo apt update
sudo apt install --only-upgrade ca-certificates

Après la mise à jour, vérifiez que la racine a été retirée :

grep -r "emSign" /etc/ssl/certs/

La commande ne doit plus renvoyer de résultat. Si vous utilisez un serveur web Apache ou Nginx pour servir vos sites, les nouvelles connexions TLS utiliseront le trust store corrigé sans redémarrage : le trust store est lu à chaque connexion entrante. En revanche, les connexions persistantes (keep-alive) déjà établies ne seront pas affectées avant leur expiration.

Correctif manuel si le paquet corrigé n'est pas encore disponible dans vos dépôts. La commande suivante désactive la racine emSign dans le fichier de configuration des certificats de confiance, puis régénère le bundle :

sudo sed -i 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' /etc/ca-certificates.conf
sudo update-ca-certificates

Cette commande préfixe la ligne de la racine emSign d'un ! dans le fichier de configuration, ce qui la désactive. update-ca-certificates régénère ensuite le bundle dans /etc/ssl/certs/ca-certificates.crt, utilisé par les serveurs web, les clients TLS et les applications du système.

Pourquoi apt upgrade seul ne suffit pas toujours

Un sudo apt upgrade met à jour les paquets pour lesquels une nouvelle version existe dans vos dépôts. Deux situations courantes peuvent l'empêcher de corriger ce problème :

  • Les dépôts de sécurité ne sont pas configurés dans /etc/apt/sources.list (la source -security est absente ou commentée). Vérifiez que la ligne deb http://security.ubuntu.com/ubuntu (Ubuntu) ou deb http://security.debian.org/debian-security (Debian) est bien active.
  • Le paquet ca-certificates est retenu (held) par une configuration dpkg ou apt, ce qui bloque sa mise à jour lors d'un apt upgrade classique.

La commande ciblée apt install --only-upgrade ca-certificates est plus fiable : elle force la mise à jour de ce paquet précis, indépendamment des autres paquets en attente. Si vous avez configuré les mises à jour de sécurité automatiques (unattended-upgrades) sur votre VPS, le correctif sera appliqué automatiquement après sa publication dans les dépôts de votre distribution.

Les conteneurs Docker sont aussi concernés

Les images Docker basées sur Debian ou Ubuntu embarquent leur propre copie du trust store. Mettre à jour ca-certificates sur l'hôte ne corrige pas les conteneurs existants. Pour chaque image :

  • Reconstruisez vos images en ajoutant RUN apt-get update && apt-get install -y ca-certificates dans le Dockerfile.
  • Si vous utilisez des images officielles (nginx, node, python), tirez la dernière version avec docker pull et redéployez.

Si vous gérez vos conteneurs avec Docker Compose, un docker compose build --pull --no-cache suivi d'un docker compose up -d suffit à reconstruire et redéployer avec le trust store corrigé.

Applications avec bundle de certificats intégré

Certains langages embarquent leur propre liste de certificats numériques de confiance, indépendante du trust store système. Même après la mise à jour de ca-certificates, ces applications peuvent encore faire confiance à la racine compromise :

  • Go : les versions 1.27.3 et 1.26.10+ retirent la racine emSign (CVE-2026-111943).
  • Python (certifi) : la version 2026.10.20 ou ultérieure retire emSign ECC Root CA - G3. Mettez à jour avec pip install --upgrade certifi.
  • Java / Tomcat : le trust store Java (cacerts) est séparé du système. Si vous exécutez un serveur Tomcat ou une application Java sur votre serveur, vérifiez que le certificat de l'autorité emSign n'est pas dans le keystore avec keytool -list -keystore $JAVA_HOME/lib/security/cacerts | grep -i emSign. Pour le retirer : keytool -delete -alias emsignecc -keystore $JAVA_HOME/lib/security/cacerts.
  • Rust (webpki-roots) : vérifiez que votre crate utilise une version postérieure au 20 octobre 2026.
  • Perl (Mozilla::CA) : le module suit le programme Mozilla. Mettez-le à jour via CPAN (CVE-2026-113812).

Si vos services tournent derrière un reverse proxy qui gère la terminaison TLS, seul le proxy a besoin du trust store à jour. Notre guide Certbot et Let's Encrypt sur VPS Linux détaille comment installer un certificat TLS valide pour chiffrer les connexions entre vos visiteurs et votre serveur web.

Services serveur à vérifier : Apache, MySQL, SMTP et autres

Au-delà du navigateur et des outils en ligne de commande, de nombreux services installés sur un serveur virtuel (VPS) ou dédié établissent des connexions TLS sortantes qui reposent sur le trust store système. Si votre admin système n'a pas mis à jour ca-certificates, ces services restent exposés :

ServiceProtocole SSL/TLS utiliséVérification
Apache / NginxHTTPS (port 443)Le serveur web utilise le trust store pour les connexions sortantes (reverse proxy, requêtes vers des API externes)
MySQL / MariaDBTLS sur port 3306Configurer ssl-ca dans my.cnf ; les réplications chiffrées entre serveurs vérifient le certificat de l'autorité distante
PostgreSQLTLS sur port 5432Le paramètre sslrootcert pointe par défaut vers le bundle système ; les connexions sécurisées sslmode=verify-full valident le nom de domaine du serveur distant
Postfix / EximSMTP avec STARTTLS (port 587)Les serveurs de messagerie SMTP vérifient le certificat TLS du serveur distant lors de l'envoi ; smtp_tls_CAfile dans Postfix pointe vers le bundle système
vsftpd / ProFTPDFTP sur TLS (FTPS)Les transferts de fichiers chiffrés via le protocole FTP sécurisé vérifient le certificat de serveur distant
PHP (curl, file_get_contents)HTTPSLes scripts PHP qui appellent des API externes utilisent le trust store système via openssl.cafile dans php.ini

Après la mise à jour du paquet ca-certificates, ces services utilisent automatiquement le nouveau bundle. Il n'est pas nécessaire de redémarrer Apache, Nginx ou les autres services pour que les nouvelles connexions TLS sortantes utilisent le trust store corrigé. En revanche, si vous avez configuré un chemin personnalisé vers un fichier de certificat de l'autorité (directive SSLCACertificateFile dans Apache, ssl_client_certificate dans Nginx), vérifiez que ce fichier ne contient pas encore la racine emSign.

Faut-il installer un nouveau certificat sur votre serveur ?

Non. La mise à jour de ca-certificates retire une racine du trust store, elle n'en ajoute pas. Votre propre certificat SSL/TLS (celui qui protège votre nom de domaine, émis par Let's Encrypt, DigiCert ou une autre autorité) n'est pas concerné par cet incident. Vous n'avez pas besoin de demander un nouveau certificat, d'ajouter un certificat de remplacement ni de modifier les enregistrements DNS de votre domaine.

Le seul cas où une action supplémentaire est nécessaire : si votre serveur utilise un certificat émis par eMudhra (emSign). Dans ce cas, ce certificat n'est plus reconnu par les navigateurs et les clients TLS. Vous devez alors demander un nouveau certificat auprès d'une autre autorité de certification. Pour installer un certificat Let's Encrypt gratuitement, suivez notre guide Certbot et Let's Encrypt sur VPS Linux.

Ce qu'il faut retenir

La compromission des clés privées d'eMudhra n'a pas provoqué d'attaque connue à ce jour, mais les clés étaient récupérables depuis 17 mois. Les navigateurs ont réagi en quelques heures. Les serveurs Linux, eux, ne bénéficient pas de ces mises à jour automatiques du trust store. Si vous administrez un VPS ou un serveur dédié :

  1. Mettez à jour le paquet ca-certificates immédiatement avec la commande sudo apt install --only-upgrade ca-certificates.
  2. Vérifiez que la racine emSign a disparu du trust store avec grep.
  3. Reconstruisez vos images Docker.
  4. Mettez à jour les applications qui embarquent leur propre bundle de certificats numériques (Go, Python certifi, Java/Tomcat, Rust webpki-roots, Perl Mozilla::CA).
  5. Vérifiez les services serveur (MySQL, PostgreSQL, Postfix, Apache) qui utilisent le trust store pour chiffrer leurs connexions sortantes.

Pour renforcer la sécurité de votre infrastructure, consultez nos guides sécuriser un VPS Ubuntu, sécuriser SSH sur VPS Linux et configurer un reverse proxy Nginx.

FAQ

Mon VPS ou serveur dédié Linux est-il concerné ?

Oui, si le paquet ca-certificates n'a pas été mis à jour depuis le 20 octobre 2026. Le trust store système contient encore la racine emSign ECC Root CA - G3, ce qui signifie que les connexions TLS sortantes (curl, wget, apt, applications PHP, Python, Node.js, Go) font confiance à des certificats signés par des clés compromises. Exécutez la commande suivante en ligne de commande : grep -r "emSign" /etc/ssl/certs/. Si elle renvoie un résultat, votre serveur est concerné.

Que fait la mise à jour du paquet ca-certificates ?

Elle retire la racine emSign ECC Root CA - G3 du trust store système (/etc/ssl/certs/). Après la mise à jour, les outils qui s'appuient sur le trust store système (curl, wget, apt, Python requests, Node.js https, scripts PHP) refusent automatiquement les certificats signés par les intermédiaires compromis. Les certificats numériques des autres autorités de certification ne sont pas affectés.

Les certificats Let's Encrypt de mon serveur sont-ils affectés ?

Non. Les certificats Let's Encrypt sont émis par l'autorité ISRG (Internet Security Research Group) et ne dépendent pas d'eMudhra. La compromission ne concerne que les certificats émis par les huit intermédiaires eMudhra. Si vous utilisez Certbot pour installer un certificat TLS sur votre serveur web, vos certificats restent valides et fiables.

Comment vérifier que la racine emSign a bien été retirée ?

Après la mise à jour de ca-certificates, exécutez grep -r "emSign" /etc/ssl/certs/. La commande ne doit renvoyer aucun résultat. Vous pouvez aussi vérifier la version du paquet avec dpkg -l ca-certificates : les versions corrigées sont 20260816ubuntu0.24.04.1 (Ubuntu 24.04), 20260816ubuntu0.22.04.1 (Ubuntu 22.04) et équivalentes pour les autres versions.

Mes connexions HTTPS sortantes sont-elles compromises ?

Pas nécessairement. Aucune attaque exploitant ces clés n'a été confirmée au 23 octobre 2026. Le risque est qu'un attaquant ayant récupéré les clés privées puisse émettre de faux certificats TLS acceptés par votre serveur. La mise à jour du trust store élimine ce risque en refusant la chaîne de confiance du certificat de l'autorité compromise.

Faut-il aussi corriger les conteneurs Docker ?

Oui. Les images Docker basées sur Debian ou Ubuntu embarquent leur propre copie du trust store. La mise à jour de ca-certificates sur l'hôte ne corrige pas les conteneurs. Reconstruisez vos images avec docker compose build --pull --no-cache ou tirez les dernières versions des images officielles (nginx, node, python) pour inclure le trust store corrigé.

Pourquoi apt upgrade seul ne suffit-il pas toujours ?

Deux raisons courantes : les dépôts de sécurité ne sont pas configurés dans /etc/apt/sources.list (la source -security est absente), ou le paquet ca-certificates est retenu (held) par une configuration dpkg. La commande apt install --only-upgrade ca-certificates force la mise à jour de ce paquet précis. Si unattended-upgrades est actif, le correctif s'applique automatiquement.

eMudhra peut-elle encore émettre des certificats TLS de confiance ?

Non, pour la hiérarchie G3. Mozilla a retiré la racine emSign ECC Root CA - G3 de son programme de confiance (NSS 3.131.1). Chrome prévoit de retirer cette même racine de son Root Store d'ici le 27 octobre 2026. eMudhra a annoncé qu'elle cesserait son activité de certificats SSL/TLS publics. Les certificats emSign de la hiérarchie G1 (RSA), non concernés par cette compromission, restent valides.

Faut-il reconfigurer Apache ou Nginx après la mise à jour ?

Non. Le serveur web Apache et Nginx lisent le trust store système à chaque nouvelle connexion TLS. Après la mise à jour du paquet ca-certificates, les connexions sécurisées sortantes (reverse proxy, requêtes vers des API) utilisent automatiquement le bundle corrigé. Seul cas particulier : si vous avez configuré un chemin personnalisé vers un fichier de certificat de l'autorité (directive SSLCACertificateFile dans Apache), vérifiez que ce fichier ne contient plus la racine emSign.

Cette faille affecte-t-elle les serveurs sous Windows ?

Oui. Sous Windows, le trust store est géré par le magasin de certificats Windows, mis à jour via Windows Update. Microsoft a bloqué les intermédiaires compromis le 20 octobre 2026. Vérifiez que les mises à jour Windows sont appliquées. Pour les applications qui utilisent leur propre trust store (Java, Python certifi, Go), la correction est la même que sous Linux : mettre à jour le bundle de certificats numériques de chaque application.

Mon certificat SSL de nom de domaine est-il compromis ?

Non, sauf si votre certificat a été émis par eMudhra (emSign). Les certificats SSL émis par d'autres autorités (Let's Encrypt, DigiCert, Sectigo, GlobalSign) ne sont pas affectés. Vous n'avez pas besoin de demander un nouveau certificat ni de modifier vos enregistrements DNS. Si votre certificat de serveur est un certificat emSign, vous devez en demander un nouveau auprès d'une autre autorité et l'installer sur votre serveur web.

MySQL et PostgreSQL sont-ils concernés ?

Oui, si ces services établissent des connexions TLS chiffrées vers des serveurs distants. MySQL utilise le paramètre ssl-ca dans my.cnf et PostgreSQL utilise sslrootcert pour configurer le certificat de l'autorité de confiance. Après la mise à jour de ca-certificates, les connexions sécurisées sortantes de ces bases de données refuseront les certificats signés par les intermédiaires eMudhra compromis. Les connexions locales non chiffrées ne sont pas affectées.