Ich gebe mal einen ganz kleinen Einblick in die Komplexität scheinbar trivialer Funktionen.
So sieht die Maske zur Bearbeitung der Domaineinstellungen künftig aus:
Herausziehen möchte ich hier mal nur den Punkt "TLS/SSL-Zertifikat".
- Wenn bereits ein oder mehrere passende Zertifikate im System vorhanden sind, die diesem Kunden oder dem bearbeitendem Admin gehören, dann würden diese hier mit zur Auswahl angezeigt. "Passend" heißt dabei, dass auch Wildcard-Zertifikate mit berücksichtigt werden, wobei darauf geachtet werden muss, ob die bearbeitete (Sub)-Domain durch Wildcards korrekt umfasst würde (z.B. gilt "*.example.org" nicht für die Domain "example.org").
- Die Option "neues Zertifikat" (wie im Screenshot zu sehen) taucht nur dann auf:
- wenn mindestens ein Anbieter-Account für automatisierte, kostenfreie TLS-Zertifikate vorhanden ist (z.B. Let's Encrypt, können aber auch andere Anbieter sein). Dabei wird geprüft, ob für den aktuellen Kunden ein eigener Account hinterlegt ist, wenn nicht dann rekursiv aufsteigend für die Reseller nach oben.
- und wenn kein Zertifikat vorhanden ist, das vom selben automatisierten Anbieter kommen würde (um Doppelbestellungen zu vermeiden) und automatisiert verlängert werden würde. Somit soll es möglich sein, ggf. auf einen anderen automatisierten Anbieter zu wechseln.
- falls mehrere Anbieter verfügbar sind, gibt es hier eine Auswahl-Box. Der Default-Wert hierfür ist für den Admin einstellbar.
- Wird ein automatisiertes Zertifikat "weggewechselt" (also nicht mehr aktiv genutzt), dann bleibt dieses zwar noch im System vorhanden, wird aber nicht mehr verlängert (außer es wird wieder aktiviert). Abgelaufene Zertifikate (die also nicht verlängert wurden) und nicht mehr in Verwendung sind, werden automatisch gelöscht.
- Jetzt gibt's kostenfreie TLS-Produkte, die keine Wildcard-Zertifikate erlauben, die keine SAN-Zertifikate erlauben, und sogar welche, die nicht einmal die "www"-Subdomain als SAN erlauben. Wenn nun die Option mit "auch auf www-Subdomain anwenden" aktiviert ist, dann muss bei so einem TLS-Produkt ein komplett separater Bestellprozess losgetreten und verwaltet werden.
Ohnehin fordert die "www-Subdomain"-Option eine ganze Menge Prüfungen (Was wenn nachträglich "www" deaktiviert wird? Oder auf eine andere IP-Adresse geändert wird? Oder umgekehrt: ein TLS-Zertifikat wurde bestellt, und später soll die www-Subdomain da mit dazu kommen...) - Die Bestellung von TLS-Zertifikaten ist ein komplett asynchroner Prozess. In der Praxis läuft das zwar meistens binnen weniger Sekunden ab, aber wir hatten schon häufig den Fall, dass Bestellungen aufgrund verschiedenster Ursachen mal mehrere Stunden oder Tage brauchen.
Die Herausforderung ist nun: wie visualisiert oder verwaltet man es, dass ein Kunde zwar ein (z.B.) Let's-Encrypt-Zertifikat bestellt hat, vielleicht aber noch ein anderes oder auch gar kein Zertifikat aktiv ist? Sobald das Zertifikat eintrifft soll es automatisch übernommen werden, bis dahin soll aber alles möglichst noch so wie bisher laufen. - Ein Webhoster verdient an kostenfreien Zertifikaten nichts, daher darf es an dieser Stelle weder einen direkten Aufwand geben, noch darf es zu indirektem Aufwand aufgrund von Kundennachfragen kommen.
- Die Domainvalidierung (DV) muss schließlich auch zuverlässig durchgeführt und für eventuelle Fehlerfälle verständlich nachvollziehbar protokolliert werden (häufigste Ursache: Probleme bei authoritativen Nameservern, von Kunden übermütig gesetzte CAA-Records, etc. - also außerhalb des Einflußbereichs von LiveConfig).
- Last but not least muss ja noch irgendwo ausgewählt werden, was für Schlüssel für die Zertifikate verwendet werden sollen (RSA oder EC). Auch das kann je nach TLS-Produkt variieren (manche Anbieter erlauben z.B. keine EC-Schlüssel in deren kostenfreien Produkten). Der Endkunde soll damit nicht "belästigt" werden (daher gibt es hier keine Key-Auswahl).
Einige weitere Aspekte habe ich bestimmt noch vergessen - aber das zeigt hoffentlich schon, wie komplex die Logik hinter einer einzigen Checkbox sein kann. Und LiveConfig hat viele Checkboxen.