Let’s Encrypt est une autorité de certification fournissant des certificats SSL depuis 2016. Une des raisons de son succès est que les certificats étaient indirectement signés par l’autorité de certification IdenTrust préinstallée dans la plupart des navigateurs. Petit à petit, le certificat racine de Let’s Encrypt a été intégré dans les navigateurs et systèmes d’exploitation, et nous voici arrivés au jour où Let’s Encrypt aurait dû prendre son envol : le jeudi 30 septembre 2021 à 16h où le certificat DST X3 d’Identrust expire.
Sauf que ce décollage est plus compliqué que prévu car Let’s Encrypt a décidé de conserver dans sa chaîne de certification un certificat intermédiaire signé par ce certificat Identrust expiré pour conserver jusqu’en 2024 la compatibilité avec Android 7 et inférieur (environ 4% du trafic web mondial).
La conséquence pour les clients HTTPS est qu’il faut s’assurer qu’openssl est assez récent (les dernières version d’openssl sont moins strictes sur la vérification des expirations) ou alors on peut contourner le problème en supprimant ce fameux certificat DST X3 dans la base locale de certificats CA. Concrètement sur les serveurs Linux, on commente la ligne mozilla/DST_Root_CA_X3.crt dans le fichier /etc/ca-certificates.conf (puis on met à jour sa base de certificats CA et on recharge les démons susceptibles de l’utiliser).
La conséquence pour les serveurs HTTPS est plus subtile : soit on garde le certificat intermédiaire signé par le certificat DST X3 expiré afin de prolonger la compatibilité avec Android 7 et inférieur, soit on supprime ce certificat intermédiaire afin de conserver la compatibilité avec des vieux clients HTTPS que l’on ne maîtrise : des clients en ligne de commande (curl, wget, etc.), du Java pas à jour, du PHP sur un système pas à jour, des clients d’API, des callbacks de paiement, etc.
Liens pour en savoir plus :