ELS-Korrektur ist für Let's Encrypt-Zertifikatsänderungen verfügbar
Let's Encrypt ist ein praktischer Weg, um Zertifikate zu erhalten und TLS-Verschlüsselung für eine breite Palette von Anwendungen zu implementieren. Gemessen an der Anzahl der ausgestellten Zertifikate ist Let's Encrypt die größte Zertifizierungsstelle (CA) der Welt. Auch in Automatisierungsszenarien wird Let's Encrypt aufgrund seines bequemen Erneuerungsmechanismus häufig eingesetzt.
Das kürzliche Auslaufen eines Wurzelzertifikats in der Standardzertifizierungskette von Let's Encrypt (30. September 2021) verursacht ernsthafte Probleme mit älteren OpenSSL-Versionen. Patches für OpenSSL-Versionen in Centos 6/Oracle Linux 6/CloudLinux 6 sind jedoch bereits verfügbar und sollten so bald wie möglich für alle betroffenen Systeme bereitgestellt werden.
Das abgelaufene Stammzertifikat in der Let's Encrypt-Zertifizierungskette (DST Root CA X3) wird bis 2024 in der Kette verbleiben. Neuere Versionen von OpenSSL ignorieren das abgelaufene Zertifikat und validieren es mit alternativen Zertifikaten in der Kette, aber ältere Versionen von OpenSSL schlagen die Überprüfung fehl. Dies führt zu schwerwiegenden Problemen, da TLS-Verbindungen fehlschlagen, obwohl sie es nicht sollten. Eine unglückliche Wendung des Schicksals ist, dass das Dienstprogramm "certbot" selbst standardmäßig nicht in der Lage ist, die Kette zu aktualisieren und die Let's Encrypt-Zertifikate zu erneuern (was das Problem beheben würde).
Dieses Problem betrifft mehrere Linux-Distributionen und -Versionen, aber die von unserem Extended Lifecycle Support abgedeckten Versionen haben bereits Patches für OpenSSL, die das Problem beheben. Dies geschieht, indem das Flag X509_V_FLAG_TRUSTED_FIRST in OpenSSL standardmäßig aktiviert wird, was im Grunde bedeutet, dass die Validierung zuerst "gute" Zertifikate ausprobieren sollte, wenn sie verfügbar sind, anstatt fehlzuschlagen, wenn sie ein "schlechtes" (sprich: abgelaufenes) Zertifikat findet. Wenn das Problem auf diese Weise behoben wird, wird auch verhindert, dass ähnliche Ereignisse in der Zukunft auftreten, wenn andere Zertifikate ablaufen, entweder in Let's Encrypt oder einer anderen Zertifizierungskette.
Wenn Sie das Problem auf eine alternative Art und Weise angehen möchten, die das zugrundeliegende Problem in OpenSSL nicht behebt, sondern einfach das aktuelle Problem umgeht, können Sie "certbot" wie folgt ausführen:
certbot renew -dry-run -preferred-chain "ISRG Root X1"
Oder fügen Sie in /etc/letsencrypt/renewal/ Folgendes hinzu
bevorzugte_Kette = ISRG Root X1
Dies wird certbot erlauben, Zertifikate zu holen, ohne die Zertifizierungskette zu beachten, die das abgelaufene Stammzertifikat enthält. Aber auch dies löst nicht das Problem, dass OpenSSL in einer Situation versagt, in der es fortfahren sollte. Zukünftige Ereignisse, in denen ein Stamm- oder Zwischenzertifikat abgelaufen ist (entweder im Zusammenhang mit Let's Encrypt oder in einer anderen Zertifizierungskette), werden weiterhin Probleme verursachen.
