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

Von Version 9.1
bearbeitet von Jonas Mayer
am 2022/05/09 13:35
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 4.1
bearbeitet von Christian Germann
am 2022/05/06 14:17
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.jonasmayer@sbede
1 +XWiki.cge@sbede
Inhalt
... ... @@ -1,14 +1,11 @@
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 +
2 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 3  
5 +**1.** (% style="color:#3498db" %)**[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.
4 4  
5 -==== __Nötige Konfigurationsschritte__ ====
7 +**2.** (% style="color:#3498db" %)**[puppeteer]**(%%) Folgenden Inhalt in die YAML-Datei /etc/logodidact/hiera/custom.d/ldhost.yaml eintragen bzw. ergänzen (ShortName entsprechend im Codeblock anpassen)
6 6  
7 -
8 -**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.
9 -
10 -**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)
11 -
12 12  {{code language="bash"}}
13 13  # Transfer Let's Encrypt SSL certificate to logosrv (target dir = /etc/freeradius/certs)
14 14  ld_legacy::radius::ensure: true
... ... @@ -15,78 +15,62 @@
15 15  ld_legacy::radius::cn: 'wlan.ShortName.logoip.de'
16 16  {{/code}}
17 17  
18 -**3.** (% style="color:#3498db" %)**[im ldhost]**(%%) prun ausführen zum Übertragen der Zertifikate
15 +**3.** (% style="color:#3498db" %)**[ldhost]**(%%) prun ausführen zum Übertragen der Zertifikate
19 19  
20 -**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)
17 +**4.** (% style="color:#3498db" %)**[logosrv]**(%%) Konfigurationsdatei des FreeRADIUS-Dienst bearbeiten und darin die Let's Encrypt Zertifikate verknüpfen (einmalige Anpassung, muss manuell vorgenommen werden)
21 21  
22 22  In der vorhandenen Config-Datei /etc/freeradius/eap.conf die entsprechenden drei Parameter anpassen (rot markierte Zeilen)
23 23  
24 -(% class="box" %)
25 -(((
26 -##tls {
27 -(% style="color:#e74c3c" %) private_key_file = ${certdir}/wlan.ShortName.logoip.de.key             (% style="color:#27ae60" %)# ShortName entsprechend anpassen(%%)
28 -(% style="color:#e74c3c" %) certificate_file = ${certdir}/wlan.ShortName.logoip.de.crt             (% style="color:#27ae60" %)# ShortName entsprechend anpassen(%%)
29 -(% style="color:#27ae60" %) # If CA_file (below) is not used, then the certificate_file below
21 +(% style="font-family:Courier New,Courier,monospace" %)tls {(%%)
22 +(% style="color:#e74c3c; font-family:Courier New,Courier,monospace" %) private_key_file = ${certdir}/wlan.ShortName.logoip.de.key             (% style="color:#27ae60; font-family:Courier New,Courier,monospace" %)#ShortName entsprechend anpassen(%%)
23 +(% style="color:#e74c3c; font-family:Courier New,Courier,monospace" %) certificate_file = ${certdir}/wlan.ShortName.logoip.de.crt             (% style="color:#27ae60; font-family:Courier New,Courier,monospace" %)#ShortName entsprechend anpassen(%%)
24 +(% style="color:#27ae60; font-family:Courier New,Courier,monospace" %) # If CA_file (below) is not used, then the certificate_file below
30 30   # MUST include not only the server certificate, but ALSO all of
31 31   # the CA certificates used to sign the server certificate.(%%)
32 -(% style="color:#e74c3c" %) #CA_file = ${cadir}/ca.pem                                             (% style="color:#27ae60" %)# diese Zeile auskommentieren(%%)
33 -}##
34 -)))
27 +(% style="color:#e74c3c; font-family:Courier New,Courier,monospace" %) #CA_file = ${cadir}/ca.pem                                             (% style="color:#27ae60; font-family:Courier New,Courier,monospace" %)#Zeile auskommentieren(% style="font-family:Courier New,Courier,monospace" %)
28 +}
35 35  
36 -Danach den FreeRADIUS-Dienst mit dem Kommando {{box}}/etc/init.d/freeradius restart{{/box}} neustarten.
37 37  
31 +Danach den FreeRADIUS-Dienst mit dem Kommando /etc/init.d/freeradius restart neustarten.
38 38  
39 -----
40 40  
34 +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.
41 41  
42 -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.
36 +Daür ist folgende Anpassung im puppeteer nötig.
43 43  
44 -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):
38 +Ändern Sie die /usr/share/acme.sh/issue wie folgt ab.
45 45  
46 -{{code language="bash"}}
47 -DOMAIN=wlan.ShortName.logoip.de # ShortName entsprechend anpassen
40 +{{code language="yaml"}}
41 +#!/bin/bash
48 48  
49 -acme.sh --issue -d "$DOMAIN" -w "/var/www" --fullchain-file "/data/le/certs/$DOMAIN.crt" \
50 - --key-file "/data/le/certs/$DOMAIN.key" --post-hook "/usr/share/acme.sh/fix-perm" --renew-hook "/usr/share/acme.sh/fix-perm" \
51 - --preferred-chain "ISRG Root X1" --force
52 -{{/code}}
43 +source /usr/share/acme.sh/sbe.conf
44 +export PATH="${SBE_SCRIPT_DIR}:$PATH"
53 53  
46 +domain="$1"
47 +if [ -z "${domain}" ]; then
48 + echo "No domain specified"
49 + exit 1
50 +fi
54 54  
52 +"${SBE_SCRIPT_DIR}/acme.sh" \
53 + --issue \
54 + -d "${domain}" \
55 + -w "${SBE_WEBROOT}" \
56 + --fullchain-file "${SBE_PUBLISH}/${domain}.crt" \
57 + --key-file "${SBE_PUBLISH}/${domain}.key" \
58 + --post-hook "${SBE_SCRIPT_DIR}/fix-perm" \
59 + --renew-hook "${SBE_SCRIPT_DIR}/fix-perm" \
60 + --preferred-chain "ISRG Root X1" \
61 + --force
62 +{{/code}}
55 55  
56 -Nachfolgend ein Vergleich des Zertifikats mit der speziell selektierten Zertifizierungsstelle "ISRG Root X1" im Vergleich zum gewöhnlichen Let's Encrypt Zertifikat.
64 +Danach wie gewohnt das Zertifikat über sle beantragen.
57 57  
58 -* Das neue LE-Zertifikat (oberer Teil der Abbildung, (% style="color:#3498db" %)//**Path #1**//(%%)) würde von einem Android-Gerät akzeptiert werden.
59 -* 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).
60 60  
61 -[[image:image-20220506141124-1.png||class="img-thumbnail"]]
67 +Hier der Unterschied zwischen den Zertifikaten.
62 62  
69 +Das neue Zertifikat (oben) würde von einem Android-Gerät akzeptiert werden.
63 63  
71 +Das untere Zertifikat entspricht der ursprünglichen Variante, ohne Anpassung.
64 64  
65 -(% class="box successmessage" %)
66 -(((
67 -**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.
68 -)))
69 -
70 -{{code language="bash"}}
71 -root@ldhost:~ $ ssh puppeteer
72 -root@puppeteer:~ $ cat /data/le/acme.sh/certs/wlan.ShortName.logoip.de/wlan.ShortName.logoip.de.conf
73 -
74 -#[...]
75 -Le_Preferred_Chain='__ACME_BASE64__START_SVNSRyBSb290IFgx__ACME_BASE64__END_'
76 -
77 -# Hinweis: der eingespeicherte Base64-kodierte Wert entspricht hier "ISRG Root X1"
78 -root@puppeteer:~ $ echo -n "ISRG Root X1" | base64
79 -SVNSRyBSb290IFgx
80 -{{/code}}
81 -
82 -
83 -Ab Version 3.0.1 des Tools **acme.sh** kann die bevorzugte Zertifizierungsstelle auch als feste Voreinstellung eingespeichert werden. Dazu im Kontext des Benutzers (% style="color:#27ae60" %)**le-acme**(%%) folgende Konfigurationsdatei anpassen:
84 -
85 -{{code language="bash"}}
86 -root@ldhost:~ $ ssh puppeteer
87 -root@puppeteer:~ $ sle
88 -le-acme@puppeteer:~ $ vim ~/config/ca/acme-v02.api.letsencrypt.org/directory/ca.conf
89 -
90 -# Folgende Zeile in zur Konfigurationsdatei hinzufügen zur Verwendung der CA "ISRG Root X1" für alle künftigen Let's Encrypt Zertifikate
91 -DEFAULT_PREFERRED_CHAIN='ISRG Root X1'
92 -{{/code}}
73 +[[image:image-20220506141124-1.png]]