Node.js a publié deux versions à un jour d’intervalle : la 24.21.0 « Krypton » (LTS) le 8 septembre 2026, puis la 26.8.2 (Current) le 9 septembre. Aucune des deux n’apporte de rupture, mais toutes deux rafraîchissent la chaîne de confiance TLS et la ligne LTS gagne au passage le chargement de clés privées via les STORE loaders d’OpenSSL. Pour un parc en production, c’est une mise à jour de sécurité et d’hygiène cryptographique, pas une version à contempler de loin.
Deux lignes, deux publications le même week-end
Les deux branches vivent leur propre calendrier : la 24.x reste la ligne LTS recommandée en production, la 26.x est la ligne Current où arrivent d’abord les nouveautés. Le tableau ci-dessous résume ce que chacune embarque.
| Version | Ligne | Date | OpenSSL | Undici | Racines |
|---|---|---|---|---|---|
| 24.21.0 « Krypton » | LTS | 8 sept. 2026 | 3.5.8 | 7.29.1 | NSS 3.126 |
| 26.8.2 | Current | 9 sept. 2026 | 3.5.8 | 8.10.2 | reprise 26.8.x |
La ligne LTS conserve Undici en 7.x pour préserver la compatibilité, quand la ligne Current suit la 8.x. Le socle OpenSSL, lui, s’aligne sur 3.5.8 des deux côtés.
Une chaîne de confiance remise à jour
Le changement le plus large touche la confiance TLS sortante. La 24.21.0 embarque le magasin de certificats racines de Mozilla dans sa version NSS 3.126, et OpenSSL passe en 3.5.8. Concrètement, un service qui appelle des API tierces en HTTPS voit son magasin de racines resynchronisé sur les autorités que le reste de l’écosystème considère comme valides : autorités ajoutées, autorités retirées, contraintes durcies. Un runtime figé sur d’anciennes racines finit tôt ou tard par rejeter un certificat pourtant légitime, ou par accepter une autorité que Mozilla a écartée depuis.
Sur une ligne LTS, la tentation est de repousser les montées de version mineures. Les certificats racines sont l’exception : les laisser vieillir revient à accumuler une dette qui se paie un jour en erreurs UNABLE_TO_VERIFY_LEAF_SIGNATURE difficiles à diagnostiquer. Vérifier les versions embarquées prend quelques secondes.
node -p "process.versions.openssl" # 3.5.8
node -p "process.versions.undici" # 7.29.1 en LTS 24.x, 8.10.2 en 26.x
node -e "console.log(require('tls').rootCertificates.length)" # racines NSS embarquéesCharger une clé privée sans la poser sur le disque
La nouveauté marquée semver-minor de la 24.21.0 est le support des clés privées chargées via les STORE loaders d’OpenSSL (contribution de Filip Skokan). Là où une clé devait jusque-là exister sous forme de fichier PEM lisible par le processus, OpenSSL 3 sait exposer une clé au travers d’un fournisseur : un module PKCS#11 adossé à un HSM, un magasin système, un agent dédié. La clé reste alors derrière son fournisseur, et le code applicatif n’en manipule qu’une référence.
Une clé privée qui ne touche jamais le système de fichiers est une clé qu’aucune fuite de volume ne compromet.
Le point d’entrée se configure côté OpenSSL, via le fichier de configuration qui active le fournisseur voulu. Node.js s’appuie ensuite sur ce fournisseur pour résoudre la clé au moment d’établir le contexte TLS.
# openssl.cnf : activer un fournisseur adossé a un HSM
[openssl_init]
providers = provider_sect
[provider_sect]
default = default_sect
pkcs11 = pkcs11_sect
[default_sect]
activate = 1
[pkcs11_sect]
module = /usr/lib/ossl-modules/pkcs11.so
activate = 1Cette bascule n’a rien d’obligatoire : la majorité des déploiements continueront de lire un fichier PEM. Elle ouvre en revanche une porte attendue par les équipes soumises à des exigences de conservation des secrets, qui refusaient jusqu’ici de voir une clé de production en clair sur un disque applicatif.
Ce que la LTS récupère au passage
La 24.21.0 rétroporte plusieurs ajouts semver-minor déjà éprouvés sur la ligne Current. Les Histogram de perf_hooks gagnent des tests d’hypothèse statistique et une implémentation revue, net.BlockList voit ses performances améliorées, et util.MIMEType.parse() reçoit une variante qui renvoie null au lieu de lever une exception sur une entrée invalide. Rien de spectaculaire, mais autant de petites arêtes en moins pour le code qui tourne déjà.
Ce qu’il faut retenir
Ces deux publications relèvent de l’entretien plus que de l’annonce : pas de nouvelle API structurante, mais une chaîne TLS resynchronisée et un vecteur de sécurité en plus pour les clés privées. La bonne réaction est de planifier la montée de la LTS 24.21.0 sur les serveurs de production, en priorisant ceux qui ouvrent des connexions HTTPS sortantes vers des tiers. Le déploiement de Node.js en production gagne à traiter ces versions mineures comme des maillons de sécurité, au même titre qu’un correctif applicatif.
Sur mes serveurs, je traite les racines de certificats comme les dépendances : une montée que je ne discute pas. J’ai vu trop de pannes « inexplicables » de webhooks se résumer à un runtime resté trois ans sur un vieux magasin de racines. Quant aux STORE loaders, je ne les activerai pas partout, mais pour les projets où la clé TLS a une vraie valeur, sortir le PEM du disque est exactement l’arbitrage que je recommande depuis longtemps. Le durcissement d’un socle serveur commence par ce genre de détails. — Simon Janvier
Pour aller plus loin : les notes de version officielles de Node.js 24.21.0 et de Node.js 26.8.2.
