Lets Encrypt Zertifikat zum FreeRADIUS-Dienst im logosrv übertragen
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.
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.
1. [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.
2. [puppeteer] Folgenden Inhalt in die YAML-Datei /etc/logodidact/hiera/custom.d/ldhost.yaml eintragen bzw. ergänzen (ShortName entsprechend im Codeblock anpassen)
ld_legacy::radius::ensure: true
ld_legacy::radius::cn: 'wlan.ShortName.logoip.de'
3. [ldhost] prun ausführen zum Übertragen der Zertifikate
4. [logosrv] Konfigurationsdatei des FreeRADIUS-Dienst bearbeiten und darin die Let's Encrypt Zertifikate verknüpfen (einmalige Anpassung, muss manuell vorgenommen werden)
In der vorhandenen Config-Datei /etc/freeradius/eap.conf die entsprechenden drei Parameter anpassen (rot markierte Zeilen)
tls {
private_key_file = ${certdir}/wlan.ShortName.logoip.de.key #ShortName entsprechend anpassen
certificate_file = ${certdir}/wlan.ShortName.logoip.de.crt #ShortName entsprechend anpassen
# If CA_file (below) is not used, then the certificate_file below
# MUST include not only the server certificate, but ALSO all of
# the CA certificates used to sign the server certificate.
#CA_file = ${cadir}/ca.pem #Zeile auskommentieren
}
Danach den FreeRADIUS-Dienst mit dem Kommando /etc/init.d/freeradius restart neustarten.
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.
Daür ist folgende Anpassung im puppeteer nötig.
Ändern Sie die /usr/share/acme.sh/issue wie folgt ab.
source /usr/share/acme.sh/sbe.conf
export PATH="${SBE_SCRIPT_DIR}:$PATH"
domain="$1"
if [ -z "${domain}" ]; then
echo "No domain specified"
exit 1
fi
"${SBE_SCRIPT_DIR}/acme.sh" \
--issue \
-d "${domain}" \
-w "${SBE_WEBROOT}" \
--fullchain-file "${SBE_PUBLISH}/${domain}.crt" \
--key-file "${SBE_PUBLISH}/${domain}.key" \
--post-hook "${SBE_SCRIPT_DIR}/fix-perm" \
--renew-hook "${SBE_SCRIPT_DIR}/fix-perm" \
--preferred-chain "ISRG Root X1" \
--force
Danach wie gewohnt das Zertifikat über sle beantragen.
Hier der Unterschied zwischen den Zertifikaten.
Das neue Zertifikat (oben) würde von einem Android-Gerät akzeptiert werden.
Das untere Zertifikat entspricht der ursprünglichen Variante, ohne Anpassung.