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

Verstecke letzte Bearbeiter
Christian Germann 1.1 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
Jonas Mayer 10.1 4 {{toc start="4" numbered="true"/}}
Jonas Mayer 9.1 5
Jonas Mayer 10.1 6
Jonas Mayer 9.1 7 ==== __Nötige Konfigurationsschritte__ ====
8
9
Jonas Mayer 5.1 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.
Christian Germann 1.1 11
Jonas Mayer 5.1 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)
Christian Germann 1.1 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
Jonas Mayer 5.1 20 **3.** (% style="color:#3498db" %)**[im ldhost]**(%%) prun ausführen zum Übertragen der Zertifikate
Christian Germann 1.1 21
Jonas Mayer 5.1 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)
Christian Germann 1.1 23
24 In der vorhandenen Config-Datei /etc/freeradius/eap.conf die entsprechenden drei Parameter anpassen (rot markierte Zeilen)
25
Jonas Mayer 5.1 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
Christian Germann 1.1 32 # MUST include not only the server certificate, but ALSO all of
33 # the CA certificates used to sign the server certificate.(%%)
Jonas Mayer 5.1 34 (% style="color:#e74c3c" %) #CA_file = ${cadir}/ca.pem                                             (% style="color:#27ae60" %)# diese Zeile auskommentieren(%%)
35 }##
36 )))
Christian Germann 1.1 37
Jonas Mayer 5.1 38 Danach den FreeRADIUS-Dienst mit dem Kommando {{box}}/etc/init.d/freeradius restart{{/box}} neustarten.
Christian Germann 1.1 39
Christian Germann 4.1 40
Jonas Mayer 5.1 41 ----
Christian Germann 4.1 42
43
Jonas Mayer 10.1 44 ==== __Kompatibilität mit Android-Geräten steigern__ ====
45
46
Jonas Mayer 5.1 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.
Christian Germann 4.1 48
Jonas Mayer 5.1 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):
Christian Germann 4.1 50
Jonas Mayer 5.1 51 {{code language="bash"}}
52 DOMAIN=wlan.ShortName.logoip.de # ShortName entsprechend anpassen
Christian Germann 4.1 53
Jonas Mayer 5.1 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}}
Christian Germann 4.1 58
59
Jonas Mayer 5.1 60
Jonas Mayer 8.1 61 Nachfolgend ein Vergleich des Zertifikats mit der speziell selektierten Zertifizierungsstelle "ISRG Root X1" im Vergleich zum gewöhnlichen Let's Encrypt Zertifikat.
Jonas Mayer 7.1 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
Jonas Mayer 5.1 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
Christian Germann 4.1 85 {{/code}}
86
87
Jonas Mayer 21.1 88 ----
Christian Germann 4.1 89
90
Jonas Mayer 13.1 91 ==== __WLAN-Profil am Endgerät einrichten (anhand des Beispiels Android)__ ====
92
93
Jonas Mayer 20.1 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.
Jonas Mayer 13.1 95
Jonas Mayer 15.1 96 [[image:android-wlan.jpg||class="img-thumbnail"]]
Jonas Mayer 14.1 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.
Christian Germann 17.1 99
Christian Germann 18.1 100 [[image:grafik.png||class="img-thumbnail"]]