Door Anoniem: Het probleem is dat je niet veel hebt aan een "officieel" certificaat, omdat iedereen een officieel certificaat kan aanvragen.
Hiermee zette je mij op het verkeerde been, maar uit de tekst daarna denk ik nu (eindelijk) te begrijpen wat het probleem is: er zijn (nog) clients waarbij je in de netwerkinstellingen voor een specifiek SSID
niet kunt specificeren wat ofwel de FQDN van de radius server is (bijv. "radius.jouwbedrijf.nl" of "wifi.jouwbedrijf.nl") ofwel de FQDN van jouw domein ("jouwbedrijf.nl").
Dus omdat de naam in het certificaat niet door sommige clients gecheckt wordt, zal elk willekeurig geldig certificaat geaccepteerd worden. Wie verzint zo'n systeem?
Nog meer frustratie tussendoor:
Ik was in de veronderstelling dat WPAx-Enterprise veel veiliger is dan personal, maar dat is niet zo: wat een puinhoop. Overal lees ik adviezen als volgt, uit
https://cloud4wi.zendesk.com/hc/en-us/articles/360036215531-WPA2-Enterprise-Android:
3. Choose Do Not Validate from the CA Certificate drop-down menu.
4. In the Identity field enter your username
5. In the Password field enter your password
Vervolgens zie ik veel boze reacties over dat de mogelijkheid voor "Do not validate" is verdwenen in Android 11 en 12.
En uit
https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/certificate-requirements-eap-tls-peap van 24 sept 2021 maak ik op (mogelijk onterecht) dat als een radius-server een ander certificaat stuurt dan is geconfigureerd, de
eindgebruiker ervoor mag kiezen om dat nieuwe certificaat voortaan te vertrouwen (opmaak door mij):
If the client is configured to trust a server certificate with a specific name, the user is prompted to decide about trusting a certificate with a different name. If the user rejects the certificate, authentication fails. If the user accepts the certificate, the certificate is added to the local computer trusted root certificate store.
Terug naar de vraag van de TS, waarvan ik de achtergrond nu wel hoop te begrijpen:
Kennelijk kun je op die suffe clients die geen domeinnaam accepteren, voor een specifieke SSID wel een rootcertificaat installeren en aangeven dat elk daarvan afgeleid (end-entity) certificaat geaccepteerd moet worden (ongeacht welke CN daarin gespecificeerd is), en dat andere certificaten, die valideren met in het OS meegeleverde rootcertificaten, moeten worden
geweigerd.
Overigens vermoed ik dat je bij dit soort clients (en wellicht bij alle), in plaats van een eigen rootcert, ook een end-entity cert kunt importeren (zie het einde van deze post).
Door Anoniem: Waar ik me nu zorgen om maak is dat dit checken in Windows alleen mogelijk lijkt te zijn via CA certificaten die geinstalleerd zijn in de systeem-brede certificaat store en die niet specifiek beperkt zijn tot gebruik voor een WiFi verbinding. Dus als de key niet zo veilig bewaard is als die van een "officiele" uitgever dan zou het kunnen gebeuren dat er willekeurige andere certificaten uitgegeven worden die de client dan vertrouwt.
Kort antwoord: wat je wilt kan, zo te zien, gedeeltelijk.
Lang: Windows lijkt het
beperken van "certificate purposes" te ondersteunen, maar daarbij gaat het kennelijk uitsluitend om EKU (Extended Key Usage) certificaat-velden. Hoe dit werkt was mij niet meteen duidelijk; dit is wat ik ervan begrijp:
Als je bijvoorbeeld 'certlm' (lm voor Local Machine) start en een categorie kiest is er een kolom "Intended purposes". Ook kun je onder menu View -> Options kiezen voor "view by purpose". Sommige rootcerts hebben purpose "All", maar de meeste zijn beperkt.
Als je dubbel-klikt op een beperkt certificaat en de Details tab opent, zie je onderaan een "Enhanced key usage" veld. Dat vind ik verwarrend, want die rootcerts hebben helemaal niet zo'n veld (logisch want het gaat niet om eigenschappen van dat rootcert zelf, maar van daarmee uitgegeven end-entity certs). Als je zo'n certificaat exporteert en
dat bekijkt, zul je zien dat er geen EKU-veld is.
Als je de dialoogbox sluit en met de rechter muistoets (in certlm of certmgr) op zo'n beperkt certificaat voor Properties kiest, zie je dat het een
overlay is, een masker zeg maar. Je kunt ook een purpose toevoegen, dat moet een OID zijn (bijv. "1.3.6.1.5.5.7.3.14" die ik eerder noemde).
Als ik het goed begrijp kun je, als je zelf een rootcert installeert, dus beperken welke toepassingen afgeleide end-entity certificaten mogen hebben. Voor jouw doel kun je, vermoed ik, alles uitzetten
behalve "Server Authentication". En misschien moet je "1.3.6.1.5.5.7.3.14" toevoegen en toestaan.
Je hebt dan in elk geval o.a. code-signing uitgesloten, maar niet https. Niet zo selectief als Android dus, waar je niet alleen het doel beperkt tot WPAx-Enterprise, maar
ook koppelt aan een specifieke SSID. En ook
dat is belangrijk, anders kan jij voor elke SSID een radius-cert maken dat de client zal accepteren (en daarmee zou jij MITM aanvallen kunnen uitvoeren als jouw client(s) elders met WPAx-Enterprise inloggen). Een kwaadwillende die jouw rootcert-private key in handen krijgt, kan dat dus ook.
Andere risico's van het uitlekken van de private key van jouw rootcert zijn:
1) Als je client certificaten gebruikt die afgeleid zijn van hetzelfde rootcert, kan een aanvaller zelf een client certificaat maken en zo op jouw netwerk komen (tenzij freeRadius een "allow-list" gebruikt, ik weet niet of dat zo is).
2) Als je geen gebruik maakt van client certs kan een aanvaller een MITM-attack uitvoeren door zelf een RADIUS-certificaat te maken voor een fake RADIUS server en een user via een fake AP laten aanmelden.
Ook zullen mensen die jouw rootcert installeren er niet alleen op moeten vertrouwen dat jij de private key goed beschermt, maar ook dat jij
zelf te vertrouwen bent (zie de onderste reactie in
https://support.google.com/pixelphone/thread/93933361/can-t-connect-to-wifi-as-domain-is-mandatory-wifi-network-is-wpa3-and-doesn-t-need-a-domain?hl=en).
Ik weet niet of alle clients de pre-installatie van een self signed (end-entity) RADIUS cert accepteren (dus in plaats van een rootcert); daarbij zijn de risico's kleiner. Als de private key daarvan in verkeerde handen valt, kan een aanvaller wel een MITM-attack uitvoeren als de gebruiker aanmeldt op jouw WiFi, maar verder heeft hij er dan niets aan. En dit risico heb je sowieso met elk type end-entity certificaat.