Let’s Encrypt SSL-Zertifikat für Kopano beantragen

Zuletzt geändert von Jens Gruber am 2022/05/25 09:01

Damit Webzugriffe auf Kopano über ein Zertifikat abgesichert sind, muss dieses zunächst auf dem LogoDIDACT-Server beantragt werden. Dies ist insbesondere für die Nutzung von Z-Push (ActiveSync-Protokoll) von hoher Relevanz.
In diesem Artikel erfahren Sie, welche Voraussetzungen es gibt und wie ein signiertes Let's Encrypt Zertifikat generiert werden kann.


Voraussetzungen

Damit ein Zertifikat generiert werden kann, müssen folgende Ports vom vorgeschalteten Router (WAN) an den logoDIDACT-Server weitergeleitet werden:

WAN (Internet) TCP-Port 80 -> auf externe IP-Adresse des logoDIDACT-Servers [http]
WAN (Internet) TCP-Port 443 -> auf externe IP-Adresse des logoDIDACT-Servers [https]
Freigabe von Kopano über rev-proxy

Stellen Sie zunächst sicher, dass der rev-proxy Container am Server aktiviert ist, falls Sie Kopano im Internet freischalten möchten.

Erweitern Sie die /etc/logodidact/hosts/rev-proxy/revproxy.conf im Puppeteer-LXC um folgende Zeilen, um Kopano im rev-proxy freizugeben. Achten Sie hierbei auf Angabe des richtigen Templates.

[ReverseProxy kopano.ShortName.logoip.de]
Url https://kopano
Template kopano

 Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:

cd /etc/logodidact/
git add .
git commit -a -m "Kopano über rev-proxy freigegeben."
Split-DNS

Hintergrund für Split-DNS ist ein oftmals fehlerhaftes NAT-Loopback am Router. Dies stellt sicher, dass externe Adressen wie z.b. kopano.shortname.logoip.de nicht zum Router geschickt werden, sondern zum internen rev-proxy weitergeleitet werden. Dadurch wird der Router als Fehlerquelle ausgeschlossen und alle Benutzer können im Schulnetz wie auch Zuhause die gleiche URL für den Zugriff verwenden.

Führen Sie folgende Schritte für die Einrichtung durch, falls noch nicht erfolgt.

Öffnen Sie die Datei "named.conf.local" im logosrv:

root@logosrv:~ # vim /etc/bind/named.conf.local

Bearbeiten Sie die Datei wie folgt (Ersetzen Sie "musterstadt" durch den Schul-Shortname):

## Externe dynamische IP intern auflösen
zone "musterstadt.logoip.de" {
  type master;
  file "/etc/bind/db.dynip";
  check-names ignore;
};

Öffnen Sie die referenzierte Datei db.dynip im logosrv:

root@logosrv:~ # vim /etc/bind/db.dynip

Passen Sie gegebenenfalls die IP-Adresse in den letzten beiden Zeilen an, als Ziel muss auf den Rev-Proxy Container verwiesen werden. Im Standard lautet dessen IP-Adresse "172.28.28.27":

$TTL 1h
@                IN     SOA   ns1.schule.local. postmaster.schule.local. (
                                2009010101 ; serial
                                86400      ; refresh (1 day)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                900        ; minimum (15 minutes)
                                )

                 NS      ns1.schule.local.
                 NS      ns2.schule.local.

@                A       172.28.28.27
*                A       172.28.28.27

Starten Sie nach den Anpassungen den DNS-Server im logosrv neu:

root@logosrv:~ # /etc/init.d/bind9 restart

SSL-Zertifikat über Tool acmetool oder acme.sh anfordern

Nach Schaffung der technischen Voraussetzungen können Sie das Let's Encrypt-Zertifikat anfordern. Je nach verwendeter Software/Serverstand können Sie die folgenden 2 Wege nutzen:

acmetool

Wechseln Sie in den puppeteer Container:

root@ldhost:~ # lxc-ssh -n puppeteer

Fordern Sie das Zertifikat mit folgendem Befehl an (Ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):

root@puppeteer:~ # acmetool want kopano.SCHULKUERZEL.logoip.de
acme.sh

Wechseln Sie in den puppeteer Container:

root@ldhost:~ # lxc-ssh -n puppeteer

Wechseln Sie im puppeteer Container in die Umgebung des Benutzers le-acme zur Verwaltung der Let's Encrypt Zertifikate:

root@puppeteer:~ # sle

Beantragen Sie ein neues Zertifikat mit folgendem Befehl (ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):

le-acme@puppeteer:~ $ issue kopano.SCHULKUERZEL.logoip.de

Um das Verteilen der Zertifikate zu beschleunigen, können Sie nacheinander einen prun im puppeteer und rev-proxy Container durchführen:

root@puppeteer:~ # prun
root@rev-proxy:~ # prun