Änderungen von Dokument Lets Encrypt Zertifikat zum FreeRADIUS-Dienst im logosrv übertragen
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
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
am 2022/05/06 14:17
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
-
Seiteneigenschaften (2 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Dokument-Autor
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. jonasmayer@sbede1 +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ötigeKonfigurationsschritte__====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" %)**[ imldhost]**(%%) prun ausführen zum Übertragen der Zertifikate15 +**3.** (% style="color:#3498db" %)**[ldhost]**(%%) prun ausführen zum Übertragen der Zertifikate 19 19 20 -**4.** (% style="color:#3498db" %)**[ imlogosrv]**(%%) 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 - ZurSteigerungderKompatibilität mitAndroid 11 / 12 Geräten kann man ein Let's Encrypt Zertifikat per acme.sh Tool beantragen,welches nichtdurch zwei Zertifizierungsstellen "cross-signed" wurde.36 +Daür ist folgende Anpassung im puppeteer nötig. 43 43 44 - Dafür muss das Zertifikat mit besonderenOptionenbeantragt werden. Hierfürzunä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 jedochnicht auf dasbekannte Kommando {{box}}issue[domain]{{/box}} für dieBeantragung zurückgreifen, sondern stattdessen folgende beiden Kommandos verwenden (entscheidendsind diebeiden 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 entsprechendanpassen40 +{{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 - Nachfolgendein Vergleich des Zertifikatsmit der speziell selektiertenZertifizierungsstelle "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]]