Die Sophos UTM 9.6 bietet nun auch die lang ersehnte Unterstützung für kostenlose Let’s Encrypt Zertifikate. Zwar unterstützt die UTM nur das ACMEv1 Protokoll und kann somit keine Wildcard Zertifikate anfordern, dafür können aber SAN-Zertifikate mit bis zu 100 DNS-Namen automatisch angefordert werden.
Kurzer Überblick zu Let’s Encrypt
Let’s Encrypt ist eine Zertifizierungsstelle (CA) die mittlerweile von nahezu jedem Gerät als vertrauenswürdig anerkannt wird. Ähnlich wie die bekannten CAs wie beispielsweise Thwate, Digicert und Comodo, akzeptieren also nahezu alle Browser, Clients und Geräte Zertifikate von Let’s Encrypt und zeigen keine Zertifikatswarnung wie “Diese Webseite ist unsicher” an.
Let’s Encrypt Zertifikate sind im Gegensatz zu den Zertifikaten anderer CAs kostenlos und können nahezu vollautomatisch angefordert und ausgestellt werden. Gerade SAN-Zertifikate mit mehreren Domain- und Hostnamen können bei den “alten Hasen” der CAs recht teuer werden. Zwar sind die Preise für Standard Zertifikate schon deutlich gesunken, allerdings zahlt man bei Thawte für ein domainvalidiertes SAN Zertifikat mit 2 Jahren Laufzeit immer noch 129 EUR. Zertifikate von anderen CA sind teilweise noch deutlich teurer.
Let’s Encrypt stellt ebenfalls domainvalidierte Zertifikate aus, allerdings immer nur mit einer Laufzeit von 3 Monaten. Wer also nicht manuell alle 3 Monate Zertifikate an Webservern und anderen Hosts tauschen möchte, muss sich hier Gedanken um die Automatisierung machen. Let’s Encrypt bietet dazu das Protokoll ACME (ja, es heißt wirklich so) an. Mit entsprechenden Clients die für nahezu jede Plattform zur Verfügung stehen, lassen sich automatisch Zertifikate anfordern und vor Ablauf erneuern. Die geringe Gültigkeit von 3 Monaten ist somit also auch kaum ein Problem. Mit der dem ACMEv2 Protokoll können sogar Wildcard Zertifikate angefordert werden. Hierfür ist allerdings eine Validierung via DNS nötig, dies macht die Automatisierung schwieriger. Zertifikate die mit dem ACMEv1 Protokoll angefordert werden, unterstützen neben der DNS Validierung auch die HTTP Validierung, dies lässt sich besonders gut automatisieren.
Let’s Encrypt stellt nur domainvalidierte Zertifikate aus, es muss also lediglich nachgewiesen werden, dass der Anforderer des Zertifikats Zugriff auf die entsprechende Domain hat. Extended Validation Zertifikate (grüner Balken im Browser) können nicht via Let’s Encrypt angefordert werden.
Let’s Encrypt bietet aktuell nur “Webserver” Zertifikate an, andere Zertifikatstypen wie S/MIME oder Code Signing Zertifikate können nicht angefordert werden.
Für alle Arten von Webservices lassen sich Let’s Encrypt Zertifikate allerdings wunderbar verwenden. Bevor irgendein Dienst im Internet per Plain-HTTP veröffentlicht wird (Mail, Extranet, Intranet, Benutzerportal, usw.), kann also mit wenig Aufwand und Kosten auch eine TLS-Verschlüsselte Kommunikation mittels Let’s Encrypt Zertifikate umgesetzt werden.
Sophos UTM 9.6 und Let’s Encrypt
Hinweis: Wie bei jeder anderen öffentlichen CA mit Domain Validierung auch, können keine Zertifikate mit nicht öffentlich auflösbaren DNS-Namen ausgestellt werden (Bsp. utm.frankysweb.local, hostxy.frankysweb.intern, etc). Wenn die UTM via ACMEv1 ein Zertifikat anfordert, validiert Let’s Encrypt die Domains via HTTP. Daher muss Let’s Encrypt alle konfigurierten Domain Namen via DNS auflösen und per Port 80 (http) erreichen können.
Let’s Encrypt lässt sich sehr einfach auf der UTM 9.6 konfigurieren. Wie schon erwähnt lassen sich allerdings nur SAN-Zertifikate anfordern. Wildcard Zertifikate lassen sich aufgrund der fehlenden ACMEv2 Unterstützung nicht anfordern.
Damit automatisch Let’s Encrypt Zertifikate angefordert und auch erneuert werden können, muss zunächst einmal die Einstellung “Let’s Encrypt Zertifikate zulassen” aktiviert werden:
Nachdem Let’s Encrypt aktiviert wurde, kann nun ein Zertifikat angefordert werden.
Für das neue Zertifikat muss ein Name angegeben und die Methode “Let’s Encrypt” ausgewählt werden. Der Punkt “Schnittstelle” ist in diesem Fall wichtig, hier muss die Schnittstelle angegeben werden, unter der die angegeben Domänen per Port 80 erreichbar sind. Alle angegebenen Domänen müssen im DNS auflösbar sein und via Port 80 aus dem Internet erreichbar sein. In der Regel handelt es sich hier also um externe Schnittstelle (WAN). Wenn mehrere externe WAN Schnittstellen zum Einsatz kommen, müssen in diesem Fall auch mehrere Zertifikate angefordert werden. Dies kann zum Beispiel der Fall sein, wenn das UTM Userportal unter WAN IP1 und die Webprotection via WAN IP2 erreichbar ist.
Im Feld “Domänen” müssen nun alle Hostnamen angegeben werden, die das Zertifikat enthalten soll:
Nachdem die Zertifikatsanforderung gespeichert wurde, kann im neuen Live Log “Let’s Encrypt” der Status kontrolliert werden:
Das Log ist auch sehr hilfreich bei der Fehlersuche, in meinem Fall wurde das Zertifikat erfolgreich ausgestellt:
Wenn das Zertifikat erfolgreich angefordert und ausgestellt wurde, wird das Zertifikat mit einem kleinen grünem Symbol versehen:
Bis hierher wurde das Zertifikat nur ausgestellt, es muss nun auch noch den angedachten Diensten zugeordnet werden. Das neue Zertifikat lässt sich nun also Beispielweise für das Admin Portal nutzen:
Das Zertifikat lässt sich natürlich auch für alle weiteren Dienste nutzen, wie zum Beispiel die Email Protection:
Hier noch ein Beispiel zur Nutzung des Zertifikats und der Webserver Protection:
Das Zertifikat ist 3 Monate lang gültig. den Austausch nimmt die UTM vor Ablauf automatisch vor. Eine erneute Zuweisung des Zertifikats an die verschiedenen Dienste ist dann nicht mehr nötig. Ob dies auch funktioniert, kann ich allerdings erst in 3 Monaten sagen.
Alternative für Wildcard Zertifikate
Let’s Encrypt bietet Clients für nahezu alle Betriebssysteme an, mit dem ACMEv1 Protokoll und der HTTP Validierung lassen sich die Zertifikate super automatisieren.
Für Wildcard Zertifikate ist allerdings das ACMEv2 Protokoll und damit auch die DNS-Validierung erforderlich. In den meisten Fällen erfordert die DNS-Validierung allerdings etwas manuellen Aufwand, denn der TXT-Record für die Validierung muss beim Hoster der Domain konfiguriert werden. Da die wenigsten Hoster eine API für ihre DNS-Server bereitstellen oder entsprechende Protokolle unterstützen, muss der TXT-Record in der Regel manuell angelegt und aktualisiert werden.
Die Webseite SSLforFree stellt ein Webinterface zur Verfügung welche die Zertifikate via Let’s Encrypt anfordert und die nötigen Einstellungen zu den Validierungsmöglichkeiten anzeigt:
Mit der Webseite SSLforFree lässt sich also Let’s Encrypt wie jede andere kommerzielle CA auch nutzen. Die Zertifikatslaufzeit beträgt allerdings weiterhin 3 Monate, bei nur wenigen Zertifikaten ist der Aufwand aber sicherlich zu vernachlässigen.