Let’s Encrypt ist eine der weltweit bedeutendsten Zertifizierungsstellen im Bereich der TLS-Zertifikate. Mit über 550 Millionen geschützten Websites hat sich der Service rasant weiterentwickelt, wobei allein im letzten Jahr ein Wachstum von 42 Prozent zu verzeichnen war. Mehr als 340.000 Zertifikate werden stündlich ausgestellt, was die enorme Skalierung und die steigenden Anforderungen an die Infrastruktur verdeutlicht. Hinter dem Erfolg steht jedoch auch eine große technische Herausforderung: die Kontrolle der Ausgabe von Zertifikaten mittels Rate Limiting, um Missbrauch zu verhindern und gleichzeitig eine zuverlässige, performante Servicebereitstellung zu gewährleisten.
Seit 2015 setzt Let’s Encrypt ein System zur Begrenzung der Anzahl von Zertifikatsanforderungen pro registrierter Domain ein. Dies beruhte bislang auf der Speicherung von Anfragen in einer traditionellen MariaDB-Datenbank. Dieses System zeigte jedoch zunehmend Schwächen, da Datenbankserver stark belastet wurden, Anfragen sich verzögerten und Nutzer aufgrund langer Sperrzeiten frustriert waren. Der Übergang in eine neue Ära der Skalierung war unerlässlich, um den steigenden Bedarf zu decken und eine Milliarde aktiver TLS-Zertifikate zu ermöglichen. Der bisherige Ansatz basierte darauf, bei jeder erfolgreichen Zertifikatsausgabe einen Eintrag zu speichern, der unter anderem die registrierte Domain und das Ausstellungsdatum enthielt.
Zum Überprüfen der Rate Limits musste die Datenbank häufig zeitintensiv nach passenden Einträgen durchsucht werden. Mit wachsenden Zugriffszahlen und neuen Limits, die eingeführt wurden, stiegen die Leselasten auf bestimmten Tabellen, insbesondere der Authorizations-Tabelle, exponentiell an. Dies erzeugte eine deutliche Belastung für die MariaDB-Datenbank, die nicht mehr mit der Nachfrage mithalten konnte. Weitere Probleme trennten sich durch die blockierende Natur des Systems bei der Eventzählung und der Datenbankpflegbarkeit. Löschvorgänge und Wartung wurden durch die Architektur der Datenbank verzögert, und wichtige Optimierungen stießen an ihre Grenzen.
Auch das bisherige Konzept mit eher starren Zeitfenstern, oft von einer Woche Dauer, führte dazu, dass Nutzer auf Basis von Token-Buckets ihre Limite innerhalb kurzer Zeit komplett erschöpfen und danach mehrere Tage gesperrt bleiben mussten. Diese Blockaden stießen auf viel Kritik, da sie bei hohem Bedarf die Nutzung stark einschränkten und den Service unhandlich erscheinen ließen. Einen wichtigen Fortschritt brachte die Einführung des neuen Systems, das auf Redis, einer In-Memory-Datenbank mit extrem niedriger Latenz, und dem Generic Cell Rate Algorithm (GCRA) basiert. Das Ziel war, eine deutlich skalierbarere, schnellere und flexiblere Methode im Umgang mit Rate Limiting zu schaffen. Redis eignet sich ideal, weil es effiziente Speichermechanismen für kurzlebige Daten bietet, die durch Time-To-Live (TTL) automatisch auslaufen.
Dies ist im Kontext von Rate Limits optimal, da dort die Beschränkungen nur für begrenzte Zeiträume relevant sind. Zudem erlauben atomare Operationen eine schnelle und sichere Aktualisierung von Zählwerten und Statusinformationen, was bei mehreren gleichzeitigen Anfragen unerlässlich ist. Der GCRA-Algorithmus, ursprünglich für Telekommunikationsnetzwerke entwickelt, setzt auf ein virtuelles Zeitfenster und verzichtet auf feste Blockgrenzen. Stattdessen wird die erlaubte Anfragerate über eine theoretische Ankunftszeit (Theoretical Arrival Time, TAT) verwaltet. Bei jeder Anfrage prüft der Algorithmus, ob die Zeit seit der letzten erlaubten Anfrage groß genug ist, um einen neuen Zugang zu gewähren.
Dabei entsteht ein nachgiebiges System, das kurzfristige Spitzen berücksichtigt, aber die durchschnittliche Anfragerate langfristig konstant hält. Dieses Verfahren erlaubt ein kontinuierliches Zurückgewinnen von Anfragemöglichkeiten ohne die abrupten Pausen, die bei früheren Systemen üblich waren. GCRA zeigte sich als sehr effizientes und ressourcenschonendes System, das auch bei Milliarden von zu verwaltenden Zertifikaten kaum Rechen- und Speicheraufwand benötigt. Der Wechsel vom MariaDB-basierten Modell zu Redis und GCRA führte zu erheblichen Verbesserungen in zahlreichen Dimensionen. Zum einen verringerte sich die Belastung der Datenbank um 80 Prozent, was zu besserer Performance, geringeren Antwortzeiten und freiem Speicher für andere Kernaufgaben führte.
Die Auslastung der Datenbank-Cache-Pools sank deutlich, und die oft problematische Authorizations-Tabelle verkleinerte sich dramatisch, was die allgemeine Stabilität steigerte. Auch die bisherigen Latenzspitzen bei Anfragen und Limitprüfungen konnten signifikant reduziert werden, sodass die Nutzer eine konsistentere und flüssigere Nutzungserfahrung genießen. Dies ist insbesondere beim stark frequentierten „new-order“-Endpunkt sichtbar, der die meisten TLS-Zertifikatsanforderungen abwickelt. Neben Performanceverbesserungen ermöglicht das neue System den gezielten Umgang mit sogenannten Zombie-Clients. Diese Nutzer oder automatisierten Systeme versuchen immer wieder, Zertifikate zu beantragen, scheitern allerdings häufig zum Beispiel wegen abgelaufener Domains oder DNS-Fehlern.
Durch die Überwachung der Anzahl aufeinanderfolgender fehlgeschlagener ACME-Challenges konnte Let’s Encrypt diese problematischen Anfragen erkennen und automatisch pausieren. Diese Maßnahme reduziert unnötigen Ressourceneinsatz und verhindert eine Überlastung der Infrastruktur ohne negative Auswirkungen auf legitime Nutzer. Die Skalierbarkeit von Redis zeigte sich auch bei der Verwaltung mehrerer Millionen eindeutiger Anfragetimestamps. Innerhalb kurzer Zeit verdoppelte sich die Anzahl der gespeicherten Theoretischen Ankunftszeiten, ohne dass sich dies negativ auf die Reaktionszeiten oder allgemeine Leistungsfähigkeit auswirkte. Diese Robustheit ist ein entscheidender Faktor auf dem Weg zur Unterstützung einer Milliarde aktiver TLS-Zertifikate.
Trotz des großen Fortschritts gibt es auch noch offene Aufgaben. Viele weitere ACME-Endpunkte, etwa im Bereich der Kontoregistrierung oder der IP-basierten Zugriffskontrolle, verwenden noch traditionelle Lastverteilermechanismen, die per IP-Adressen Rate Limits durchsetzen, aber wenig Rückmeldung zu Sperrzeiten bieten. Hier plant Let’s Encrypt den Übergang zu der neuen Redis-basierten Infrastruktur, um auch diese Bereiche von den Vorteilen von GCRA zu profitieren lassen und Nutzern transparentere Rückmeldungen zu liefern. Langfristig denken die Entwickler darüber nach, Rate Limits nicht mehr nur als einfache Zählvorgänge zwischen zwei Zeitpunkten zu definieren, sondern dynamischere, anwendungsgerechtere Modelle zu etablieren, die gerechter sind und noch besser den realen Nutzungsbedingungen entsprechen. Let’s Encrypt verfolgt weiterhin das Ziel, den Nutzern das notwendige Zertifikat schnell, sicher und vor allem kostenlos zur Verfügung zu stellen.
Die Umstellung auf Redis und GCRA ist ein Meilenstein auf diesem Weg und zeigt exemplarisch, wie technische Innovation in der Infrastruktur zur Verbesserung von Benutzererfahrung und Systemstabilität beitragen kann. Die Open-Source-Community und die breite Webbranche profitieren davon gleichermaßen, wenn die größte freie Zertifizierungsstelle der Welt mit ihrer Infrastruktur den nächsten technologischen Sprung vollzieht. Die Geschichte von Let’s Encrypt und seiner Anpassung an exponentielles Wachstum ist ein eindrucksvolles Beispiel für die Herausforderungen und Lösungen moderner Cloud-Infrastrukturen. Es verdeutlicht, wie essenziell es ist, Altsysteme rechtzeitig zu hinterfragen und durch durchdachte Architekturen zu ersetzen. Gerade in sensiblen Bereichen wie der Internetsicherheit, wo Zuverlässigkeit und Verfügbarkeit höchste Priorität haben, zahlen sich solche Optimierungen mehrfach aus.
Die Kombination aus Redis und dem GCRA-Algorithmus verspricht nicht nur mehr Skalierbarkeit, sondern auch mehr Fairness für Nutzer und eine nachhaltige Schonung der technischen Ressourcen. Während Let’s Encrypt seine Infrastruktur weiterentwickelt, bleibt der Fokus darauf, das Web sicherer und vertrauenswürdiger zu machen. Die Skalierung der Rate Limits ist dabei ein Baustein von vielen, die gemeinsam dafür sorgen, dass auch bei weiterem Wachstum die Qualität und Verfügbarkeit von TLS-Zertifikaten gesichert ist. Die Zukunft wird zeigen, wie sich diese Technologien weiterentwickeln, doch die vorgestellte Lösung bildet schon heute eine solide Basis für den Umgang mit Milliarden Zertifikatsanfragen – ein klares Zeichen für die Innovationskraft und das Engagement hinter diesem wichtigen Projekt für eine sicherere digitale Welt.