Damit kann jeder leicht seine eigenen Server mit TLS-Zertifikaten ausstatten. Da der Dienst nur überprüft, ob der Antragsteller Kontrolle über die Domain hat, für die er das Zertifikat ausstellt, dürfen die Zertifikate nur eine recht kurze Zeit gültig sein. Man muss sie also häufig erneuern. Dies erledigen verschiedene Programme automatisch. In OPNsense gibt es ein eigenes Plugin zum Einrichten von Zertifikaten.
Plugin installieren
Das Plugin wird wie andere Plugins auch einfach über System>Firmware>Plugins ausgewählt und installiert. Danach kann man es unter Services>Let’s Encrypt konfigurieren.
Automatismen
In den meisten Fällen kann man die Verbindung von außen mit TLS bis zur Firewall absichern. Die Firewall kann dann Klartext mit den Servern sprechen (siehe auch Reverse Proxy in OPNsense einrichten). Das hat den Vorteil, dass die Konfiguration einfacher ist und die Rechenlast der Verschlüsselung auf der Firewall liegt. Der Nachteil ist, dass ein Angreifer in der DMZ eventuell die Daten abgreifen kann. Wenn man die Zertifikate von Let’s Encrypt auf dem eigentlichen Server haben will oder benötigt, könnte man auf dem Server einen eigenen Let’s-Encrypt-Client installieren oder die Zertifikate mit dem Let’s-Encrypt-Plugin in OPNsense beziehen und dann auf den eigentlichen Server kopieren. Das ist im Plugin auch schon vorgesehen. Dafür gibt es den Punkt “Automation”.
Die “Automation” ist für diesen Fall relativ einfach eingerichtet. Man fügt mit dem “+"-Knopf eine neue hinzu und gibt ihr dann einen Namen, danach wählt man “Upload certificate via SFTP”. Das finde ich bis hier selbst erklärend. Der Parameter “SFTP host” wird einfach auf den Rechnernamen oder die IP des Servers gesetzt, auf den die Zertifikate per SFTP kopiert werden sollen. Wenn man ganz sicher gehen will besorgt man sich noch auf einem sicheren Weg den öffentlichen Schlüssel des Server und trägt in im nächsten Feld ein. Das ist aber nicht unbedingt nötig, wenn man sich darauf verlassen kann, dass das Netz zum Server sauber ist.
Der “Username” ist den Benutzername unter dem die Zertifikate auf den Server übertragen werden sollen. Dieser Benutzer muss auf dem Server existieren. Er braucht nicht in OPNsense zu existieren. Der erfahrene Praktiker fragt sich jetzt, wie authentisiert sich denn OPNsense gegenüber dem Server als dieser Benutzer. Die übrigen Einträge liefern keinen Hinweis, selbst wenn man ganz oben den “advanced mode” einstellt. Das Geheimnis verbirgt sich hinter dem “Show identity”-Knopf. Auch wenn er so grau und deaktiviert aussieht. Klickt man darauf, bekommt man die Zeile mit dem öffentlichen Schlüssel angezeigt. Diese Zeile muss man in die ~/.ssh/authorized_keys
des Benutzers auf dem Server kopieren. Jetzt sollte sich die OPNsense-Firewall gegenüber dem Server als der gewünschte Benutzer anmelden können. Man kann dies mit “Test connection” überprüfen”.
Möchte man ein Zertifikat auf diesen Server übertragen wählt man diesen Automatismus in der Konfiguration des Zertifikats aus und es wird immer automatisch über SFTP auf den Server kopiert. Das Plugin kopiert dabei auch den privaten Schlüssel zum Zertifikat und das CA-Zertifikat in das angegebene Verzeichnis auf dem Server.