Zuletzt geändert von Jonas Mayer am 2022/05/17 10:46

Zeige letzte Bearbeiter
1 Im Zuge der stärkeren Verbreitung von Android 11 (oder neuer) und des WPA3-Standards ist es nötig, bei RADIUS-gesicherten WLAN-Netzen sauber signierte SSL-Zertifikate am RADIUS-Server einzusetzen, damit die Clients eine Verbindung herstellen können.
2 Daher wurde ab Puppet-Version 1.5.0 die Möglichkeit implementiert, ein ausgewähltes Let's Encrypt Zertifikat zum FreeRADIUS-Dienst im logosrv zu übertragen. Folgende Anpassungen sind dazu nötig.
3
4 {{toc start="4" numbered="true"/}}
5
6
7 ==== __Nötige Konfigurationsschritte__ ====
8
9
10 **1.** (% style="color:#3498db" %)**[im puppeteer]**(%%) Neues Let's Encrypt SSL-Zertifikat per acmetool oder acme.sh beantragen, hierfür einen geeigneten Namen verwenden (z.B. wlan.ShortName.logoip.de oder radius.ShortName.logoip.de). Danach 2x prun ausführen.
11
12 **2.** (% style="color:#3498db" %)**[im puppeteer]**(%%) Folgenden Inhalt in die YAML-Datei /etc/logodidact/hiera/custom.d/ldhost.yaml eintragen bzw. ergänzen (ShortName entsprechend im Codeblock anpassen)
13
14 {{code language="bash"}}
15 # Transfer Let's Encrypt SSL certificate to logosrv (target dir = /etc/freeradius/certs)
16 ld_legacy::radius::ensure: true
17 ld_legacy::radius::cn: 'wlan.ShortName.logoip.de'
18 {{/code}}
19
20 **3.** (% style="color:#3498db" %)**[im ldhost]**(%%) prun ausführen zum Übertragen der Zertifikate
21
22 **4.** (% style="color:#3498db" %)**[im logosrv]**(%%) Konfigurationsdatei des FreeRADIUS-Dienst bearbeiten und darin die Let's Encrypt Zertifikate verknüpfen (einmalige Anpassung, muss manuell vorgenommen werden)
23
24 In der vorhandenen Config-Datei /etc/freeradius/eap.conf die entsprechenden drei Parameter anpassen (rot markierte Zeilen)
25
26 (% class="box" %)
27 (((
28 ##tls {
29 (% style="color:#e74c3c" %) private_key_file = ${certdir}/wlan.ShortName.logoip.de.key             (% style="color:#27ae60" %)# ShortName entsprechend anpassen(%%)
30 (% style="color:#e74c3c" %) certificate_file = ${certdir}/wlan.ShortName.logoip.de.crt             (% style="color:#27ae60" %)# ShortName entsprechend anpassen(%%)
31 (% style="color:#27ae60" %) # If CA_file (below) is not used, then the certificate_file below
32 # MUST include not only the server certificate, but ALSO all of
33 # the CA certificates used to sign the server certificate.(%%)
34 (% style="color:#e74c3c" %) #CA_file = ${cadir}/ca.pem                                             (% style="color:#27ae60" %)# diese Zeile auskommentieren(%%)
35 }##
36 )))
37
38 Danach den FreeRADIUS-Dienst mit dem Kommando {{box}}/etc/init.d/freeradius restart{{/box}} neustarten.
39
40
41 ----
42
43
44 ==== __Kompatibilität mit Android-Geräten steigern__ ====
45
46
47 Zur Steigerung der Kompatibilität mit Android 11 / 12 Geräten kann man ein Let's Encrypt Zertifikat per acme.sh Tool beantragen, welches nicht durch zwei Zertifizierungsstellen "cross-signed" wurde.
48
49 Dafür muss das Zertifikat mit besonderen Optionen beantragt werden. Hierfür zunächst wie üblich zum LXC-Container (% style="color:#3498db" %)**puppeteer**(%%) verbinden und über den Befehl {{box}}sle{{/box}}  zum Benutzer (% style="color:#27ae60" %)**le-acme**(%%) wechseln. Jetzt jedoch nicht auf das bekannte Kommando {{box}}issue [domain]{{/box}} für die Beantragung zurückgreifen, sondern stattdessen folgende beiden Kommandos verwenden (entscheidend sind die beiden Optionen in der letzten Zeile):
50
51 {{code language="bash"}}
52 DOMAIN=wlan.ShortName.logoip.de # ShortName entsprechend anpassen
53
54 acme.sh --issue -d "$DOMAIN" -w "/var/www" --fullchain-file "/data/le/certs/$DOMAIN.crt" \
55 --key-file "/data/le/certs/$DOMAIN.key" --post-hook "/usr/share/acme.sh/fix-perm" --renew-hook "/usr/share/acme.sh/fix-perm" \
56 --preferred-chain "ISRG Root X1" --force
57 {{/code}}
58
59
60
61 Nachfolgend ein Vergleich des Zertifikats mit der speziell selektierten Zertifizierungsstelle "ISRG Root X1" im Vergleich zum gewöhnlichen Let's Encrypt Zertifikat.
62
63 * Das neue LE-Zertifikat (oberer Teil der Abbildung, (% style="color:#3498db" %)//**Path #1**//(%%)) würde von einem Android-Gerät akzeptiert werden.
64 * Das Standard LE-Zertifikat (unterer Teil der Abbildung, (% style="color:#3498db" %)//**Path #2**//(%%)) entspricht der ursprünglichen Variante, ohne Anpassung (und gemäß des CA-Datums nicht mehr gültig).
65
66 [[image:image-20220506141124-1.png||class="img-thumbnail"]]
67
68
69
70 (% class="box successmessage" %)
71 (((
72 **INFO: **Die Einstellung der präferierten Zertifizierungsstelle "ISRG Root X1" wird für dieses Zertifikat bei Verlängerungen auf Domainebene beibehalten. Die Option "Preferred-Chain" wird hierzu im Config-File des Zertfikats vom acme.sh Tool eingespeichert.
73 )))
74
75 {{code language="bash"}}
76 root@ldhost:~ $ ssh puppeteer
77 root@puppeteer:~ $ cat /data/le/acme.sh/certs/wlan.ShortName.logoip.de/wlan.ShortName.logoip.de.conf
78
79 #[...]
80 Le_Preferred_Chain='__ACME_BASE64__START_SVNSRyBSb290IFgx__ACME_BASE64__END_'
81
82 # Hinweis: der eingespeicherte Base64-kodierte Wert entspricht hier "ISRG Root X1"
83 root@puppeteer:~ $ echo -n "ISRG Root X1" | base64
84 SVNSRyBSb290IFgx
85 {{/code}}
86
87
88 ----
89
90
91 ==== __WLAN-Profil am Endgerät einrichten (anhand des Beispiels Android)__ ====
92
93
94 Am Endgerät muss gemäß WPA3-Spezifikation für die Einrichtung des WLAN-Netzwerks neben den RADIUS-Anmeldedaten (Benutzername + Kennwort) auch die passende Domain eingetragen werden. Der richtige Wert für das Feld **Domäne** ergibt sich also aus dem Let's Encrypt Zertifikat, welches in den vorherigen Schritten zu diesem Zweck beantragt und mit dem FreeRADIUS-Dienst am Server verknüpft wurde.
95
96 [[image:android-wlan.jpg||class="img-thumbnail"]]
97
98 Darüber hinaus ist es wie immer erforderlich, dass das entsprechende Benutzerkonto per LogoDIDACT Console im Benutzermanagement für den WLAN-Zugriff freigeschaltet wurde.
99
100 [[image:grafik.png||class="img-thumbnail"]]