Version 3.1 von Jens Gruber am 2022/05/02 10:24

Zeige letzte Bearbeiter
1 Damit der Webzugriff von Kopano über ein Zertifikat abgesichert ist, muss dieses erst auf dem logoDIDACT-Server generiert werden. In folgendem Artikel erfahren Sie, was für Vorrausetzungen es gibt und über welche Wege ein Zertifikat generiert werden kann.
2
3
4 ==== __**Vorrausetzungen**__ ====
5
6
7 ===== __Portweiterleitung__ =====
8
9 Damit ein Zertifikat generiert werden kann, müssen folgende Ports vom Router (WAN) an den logoDIDACT-Server weitergeleitet werden:
10
11 {{code language="bash"}}
12 WAN (Internet) TCP-Port 80 -> auf externe IP-Adresse des logoDIDACT-Servers [http]
13 WAN (Internet) TCP-Port 443 -> auf externe IP-Adresse des logoDIDACT-Servers [https]
14 {{/code}}
15
16
17 ===== __Split-DNS__ =====
18
19 Split-DNS muss im logosrv eingerichtet werden und sorgt für ein zuverlässiges beantragen des SSL-Zertifikates. Hintergrund für Split-DNS ist ein oftmals fehlerhaftes NAT-Loopback am Router. Dies sorgt dafür dass nicht versucht wird, interne Adressen auch intern aufzulösen sondern ins Internet geschickt werden.
20
21
22 Führen Sie folgende Schritte für die Einrichtung durch:
23
24 Öffnen Sie die Datei "named.conf.local" im logosrv:
25
26 {{code language="bash"}}
27 root@logosrv:~ # vim /etc/bind/named.conf.local
28 {{/code}}
29
30
31 Bearbeiten Sie die Datei wie folgt (Ersetzen Sie "musterstadt" durch den Schul-Shortname):
32
33 {{code language="bash"}}
34 ## Externe dynamische IP intern auflösen
35 zone "musterstadt.logoip.de" {
36   type master;
37   file "/etc/bind/db.dynip";
38   check-names ignore;
39 };
40 {{/code}}
41
42
43 Öffnen Sie die Datei "db.dynip" im logosrv:
44
45 {{code language="bash"}}
46 root@logosrv:~ # vim /etc/bind/db.dynip
47 {{/code}}
48
49
50 Passen Sie gegebenenfalls die IP des Rev-Proxy Containers an. Im Standard ist diese die "172.28.28.27":
51
52 {{code language="bash"}}
53 $TTL 1h
54 @                IN     SOA   ns1.schule.local. postmaster.schule.local. (
55                                 2009010101 ; serial
56                                 86400      ; refresh (1 day)
57                                 900        ; retry (15 minutes)
58                                 604800     ; expire (1 week)
59                                 900        ; minimum (15 minutes)
60                                 )
61
62                  NS      ns1.schule.local.
63                  NS      ns2.schule.local.
64
65                  A       172.28.28.27
66 *                A       172.28.28.27
67 {{/code}}
68
69
70 Starten Sie nach den Anpassungen den DNS-Server im logosrv neu:
71
72 {{code language="bash"}}
73 root@logosrv:~ # /etc/init.d/bind9 restart
74 {{/code}}
75
76
77 ==== **__Zertifikat über acmetool & acme.sh anfordern__** ====
78
79 Nach Schaffung der technischen Vorrausetzungen können Sie das Let's Encrypt-Zertifikat anfordern. Je nach verwendeter Software/Serverstand können Sie die folgenden 2 Wege nutzen:
80
81
82 ===== **__acmetool__** =====
83
84 Wechseln Sie in den puppeteer Container:
85
86 {{code language="bash"}}
87 root@ldhost:~ # lxc-ssh -n puppeteer
88 {{/code}}
89
90
91 Fordern Sie das Zertifikat mit folgendem Befehl an (Ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):
92
93 {{code language="bash"}}
94 root@puppeteer:~ # acmetool want kopano.SCHULKUERZEL.logoip.de
95 {{/code}}
96
97
98 **__acme.sh__**
99
100 Wechseln Sie in den puppeteer Container:
101
102 {{code language="bash"}}
103 root@ldhost:~ # lxc-ssh -n puppeteer
104 {{/code}}
105
106
107 Wechseln Sie im puppeteer Container in die Umgebung für das Verwalten der Zertifikate:
108
109 {{code language="bash"}}
110 root@puppeteer:~ # sle
111 {{/code}}
112
113
114 Beantragen Sie ein neues Zertifikat mit folgendem Befehl (Ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):
115
116 {{code language="bash"}}
117 le-acme@puppeteer:~ $ issue kopano.SCHULKUERZEL.logoip.de
118 {{/code}}
119
120
121 Um das verteilen der Zertifikate zu beschleunigen können Sie ggf. einen prun im puppeteer und rev-proxy Container durchführen:
122
123 {{code language="bash"}}
124 root@puppeteer:~ # prun
125 root@rev-proxy:~ # prun
126 {{/code}}
127
128