Vraag


Acties:
  • +3Henk 'm!

  • ijsblok
  • Registratie: Februari 2001
  • Laatst online: 23-12-2022
De non-profit organisatie waar ik wat vrijwilligerswerk doe wil de veiligheid van de IT infrastructuur verbeteren. Ik heb daarbij aangeboden om EAP-TLS te implementeren als WIFI beveiliging, onder andere om de gevolgen van de verspreiding van het PSK wachtwoord in de huidige situatie voorgoed in te dammen. En omdat ik het leuk vind om te doen :P

Relevante software en hardware die ik gebruik

ALs test heb ik een labje gemaakt met een Cisco WLC, drie Cisco lightweight AP's en een Freeradius server die draait op Debian 10. De bedoeling is dat Windows 10 en Android 10 of hoger uiteindelijk kan connecten met de WIFI via certificaten (EAP-TLS).

Het is me gelukt om de basis waarbij enkel username/password (PEAP) betrokken is, te laten werken op alle systemen. EAP-TLS.... not so much. Ben nu al dagen bezig :X |:(
Er zijn wat handleidingen te vinden op Internet om EAP-TLS te configureren, maar die zijn vaak incompleet, oud, onduidelijk of een combinatie daarvan. Dat maakt duidelijk info gefragmenteerd, en lastig te interpreteren op mijn situatie.
Ik loop voornamelijk aan tegen creëren van de relevante certificaten, configuratie daarvan en die compatible zijn met zowel Windows 10 als Android. Degenen die ik maak bij genoemde gevonden info op indernet worden niet geaccepteerd door Windows, of Android. Bijvoorbeeld PEM certs snapt Windows niet, Pem certs die samen gaan met een .key file snapt Android niet (die .key files Windows geloof ik ook niet), P12 certs lijkt Android zich in te verslikken, ik weet niet goed hoe Freeradius op PFX files reageert....Het helpt ook niet dat ik niet zo thuis ben in certificaten.

Mijn vraag/uitdaging:

Heeft iemand dit al eens gedaan en werkend gekregen? Zo ja, hoe heb je het gedaan, en zou je een handleiding willen maken?

Om het interessant te maken knip
Modbreak:Voor werving (hoe goed bedoeld misschien ook), is dit niet de juiste plek

Zie ook het Algemeen beleid

[Voor 14% gewijzigd door Question Mark op 19-07-2021 19:38]

Alle reacties


  • ijsblok
  • Registratie: Februari 2001
  • Laatst online: 23-12-2022
Ok, ik had achteraf zelf ook wel kunnen bedenken dat dit kon gebeuren. |:(
Excuses aan iedereen die hierbij betrokken is ;w

Dat gezegd hebbende, niemand heeft gereageerd. Misschien ben ik wel de enige idioot in Nederland dit interessant/belangrijk vind.

Ondertussen heb ik zelf ook niet stil gezeten, en ik heb het inmiddels al 'opgelost'. Dus dan kan ik net zo goed mijn eigen vraag gaan beantwoorden. "Wat heb ik daaraan" hoor ik u roepen. Ja, hee, zoek dat lekker zelf uit! Misschien ben je die andere zeldzame medelander die dit ook interessant vind. Of heb je een k*topdracht van je baas gekregen met betrekking hierop. Of gewoon, omdat het kan. Of misschien heb je er ook helemaal niks aan.

Ik zal nu stap voor stap aangeven hoe je vanuit vrijwel niks een Freeradius server opzet voor EAP-TLS, en Windows-, Android 10/11 en IOS-clients kan laten connecteren op een WIFI netwerk met deze methode. Het is geschreven vanuit het perspectief dat je net als ik 'iets weet van computers', maar weinig van Linux, certificaten en Freeradius.

Benodigd: een computer met Linux (ik gebruik Debian 10, maar andere kunnen waarschijnlijk ook). Heb je die niet? Geeft niet, je hebt niet veel nodig. Die ouwe computer die in de kast ligt te verstoffen voldoet waarschijnlijk al. Of je schaft een Raspberry PI aan (kost weinig) en installeert er Raspberry PI OS op. Het kan ook in een VM. Zoek het uit, er zijn een miljoenmiljard handleidingen te vinden op internet hoe je een basis linux installatie doet.
Verder heb je een Access Point nodig die 802.1x authenticatie ondersteund. Waarschijnlijk niet die van je provider. Enige bekendheid met je AP is erg handig. Anders heb je Google.
Je omgeving is wat je typisch thuis aantreft. Alle Clients zijn unmanaged, en/of zijn geen onderdeel van een logisch netwerkidentiteit (domeinen e.d.)

DISCLAIMER: Dit is bedoeld voor educatie en hobby, mijn kennis van alle genoemde is eigenlijk zwaar onvoldoende. Ik neem aan dat meer ervaren tweakers bij het lezen zullen gaan lachen of facepalmen. Het resultaat werkt echter wél. Maar ik raad het ten zeerste af het eindproduct 'as is' te gebruiken in een professionele omgeving.

Basis Installatie Freeradius

Ok, je hebt je linux-bak vers klaargemaakt, en je opent een terminal sessie ernaar.

Eerst ga je wat algemene updates uitvoeren:
ijsblok@Debian-VM:~$ sudo apt update
Installeer Freeradius (vanuit de repository)
ijsblok@Debian-VM:~$ sudo apt install freeradius
Configureer freeradius om verkeer van de ap/router te accepteren. Hierna te noemen als NAS (Network Access Server, niet verwarren met dat ding van Synology op je zolderkamer). Browse naar /etc/freeradius/3.0.
Makkelijkste omdat als root te doen:
ijsblok@Debian-VM:~$ sudo -i
root@Debian-VM:~# cd /etc/freeradius/3.0/
root@Debian-VM:/etc/freeradius/3.0#
Voeg je NAS toe in de clients.conf file.
root@Debian-VM:/etc/freeradius/3.0# nano clients.conf
Onderaan, voeg je je NAS toe als dit:


client [ipadres van je NAS] {
secret = supersecretpassword123#
nas_type = [merk van je NAS]
shortname = [geef het een naam]
}

NB: elders in de client.conf file staat welke merken ‘toegestaan’ worden. Als je merk er niet bij staat, gebruik dan ‘other’.

Uiteindelijk krijg je iets als dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
…

#clients per_socket_clients {
#       client socket_client {
#               ipaddr = 192.0.2.4
#               secret = testing123
#       }
#}

client 192.168.2.3 {
secret = supersecretpassword123#
nas_type = cisco
shortname = WLC
}


Druk ctrl+o om op te slaan, dan ctrl+x om af te sluiten.

NB: andere al ingestelde regels komen later nog van pas.

Je kunt het beste even testen of je client.conf file ‘goed’ hebt ingevuld. Dwz, vanuit het oogpunt van Freeradius natuurlijk. Kan je doen in debug mode.
Eerst freeradius service even stoppen:
root@Debian-VM:/etc/freeradius/3.0# systemctl stop freeradius
dan, start freeradius in debug mode:
root@Debian-VM:/etc/freeradius/3.0# freeradius -X
Freeradius zal nu vergeten brackets, spelfouten en dergelijke weergeven, indien aanwezig.

Als de laatste regel is
Ready to process requests
Dan is het goed.

NB: mocht je nog een foutmelding krijgen iets met ‘failed binding’, dan heb je de freeradius service niet gestopt voordat je debug mode startte.

Druk ctrl+c om debug mode te beëindigen.

EAP-TLS

Voor EAP-TLS zijn certificaten nodig. In de Freeradius package is al e.e.a. voor je klaargezet om op een eenvoudiger manier (als bijvoorbeeld met openssl) wat certificaten te maken en de ‘tekenen’. We hebben een CA (root) certificaat nodig, een server certificaat en een client certificaat.
Ga naar de ‘certs’ directory
root@Debian-VM:/etc/freeradius/3.0# cd certs
root@Debian-VM:/etc/freeradius/3.0/certs# dir
bootstrap client.cnf inner-server.cnf README xpextensions
ca.cnf dh Makefile server.cnf
root@Debian-VM:/etc/freeradius/3.0/certs#
In deze dir staan een paar .cnf files. Die kan je openen met een tekst editor, en dat gaan we ook doen; met client.cnf, server.cnf en ca.cnf. We beginnen met ca.cnf voor de ca certifcaten.
NB: De certs dir is ook als default certificaat dir voor Freeradius. Dit kan je terugvinden/aanpassen in de verschillende configuratie bestanden.
root@Debian-VM:/etc/freeradius/3.0/certs# nano ca.cnf
Je kunt hier vanalles aanpassen, bijvoorbeeld de encryptiesterkte van je certificaat. Maar we focussen nu op wat het meest belangrijk is voor deze handleiding. Twee sectie zijn relevant: [ req ] en [certificate_authority].


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ req ]
prompt                  = no
distinguished_name      = certificate_authority
default_bits            = 2048
input_password          = supersecretpassword123
output_password         = supersecretpassword123
x509_extensions         = v3_ca

[certificate_authority]
countryName             = NL
stateOrProvinceName     = Netherlands
localityName            = Amsterdam
organizationName        = EAP-TLS voor dummies united
emailAddress            = admin@eap-tls4dummies.org
commonName              = "CACert4Dummies"


Belangrikste is om hier countryName, stateOrProvinceName localityName en commonName aan te passen. De commonName is hoe het certificaat gaat heten wanneer je hem zou willen terugvinden in bijvoorbeeld Windows. De rest is wat optioneel, maar je moet wel de wachtwoorden onthouden.

Wanneer klaar, sla op en maak het certificaat
root@Debian-VM:/etc/freeradius/3.0/certs# make ca
make[1]: Entering directory '/etc/freeradius/3.0/certs'
make[1]: Leaving directory '/etc/freeradius/3.0/certs'
make[1]: Entering directory '/etc/freeradius/3.0/certs'
make[1]: Leaving directory '/etc/freeradius/3.0/certs'
openssl req -new -x509 -keyout ca.key -out ca.pem \
-days '60' -config ./ca.cnf
Generating a RSA private key
...............................................................+++++
............................................................+++++
writing new private key to 'ca.key'
-----
chmod g+r ca.key
openssl x509 -inform PEM -outform DER -in ca.pem -out ca.der
root@Debian-VM:/etc/freeradius/3.0/certs#dir ca.*
ca.cnf ca.der ca.key ca.pem
root@Debian-VM:/etc/freeradius/3.0/certs#
ca.der, ca.key, en ca.pem zijn aangemaakt. Voor linux gebruiken we de .key en .pem file, waarvoor .der file voor dient is mij niet duidelijk. Ik lees hier en daar dat het bedoeld zou zijn voor Windows, maar daar werkt het voor zover ik weet in elk geval niet. Hier komen we later op terug.

We gaan verder met het server certificaat.
root@Debian-VM:/etc/freeradius/3.0/certs# nano server.cnf
Zelfde weer als met de CA:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ req ]
prompt                  = no
distinguished_name      = server
default_bits            = 2048
input_password          = supersecretpassword123
output_password         = supersecretpassword123

[server]
countryName             = NL
stateOrProvinceName     = Netherlands
localityName            = Amsterdam
organizationName        = EAP-TLS voor dummies united
emailAddress            = admin@eap-tls4dummies.org
commonName              = "ServerCert4Dummies"


Belangrijk is wel dat de commonName anders is dan die van de CA. CountryName, stateOrProvinceName, localityName en organizationName moeten hetzelfde zijn als die van de CA.
Opslaan en certificaat maken
root@Debian-VM:/etc/freeradius/3.0/certs# make server
openssl req -new -out server.csr -keyout server.key -config ./server.cnf
Generating a RSA private key
...........................................................+++++
.........................................................................+++++
writing new private key to 'server.key'
-----
chmod g+r server.key
openssl ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key 'supersecretpassword123' -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf
Using configuration from ./server.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jul 27 12:09:39 2021 GMT
Not After : Sep 25 12:09:39 2021 GMT
Subject:
countryName = NL
stateOrProvinceName = Netherlands
organizationName = EAP-TLS voor dummies united
commonName = ServerCert4Dummies
emailAddress = admin@eap-tls4dummies.org
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 CRL Distribution Points:

Full Name:
URI:http://www.example.com/example_ca.crl

Certificate is to be certified until Sep 25 12:09:39 2021 GMT (60 days)

Write out database with 1 new entries
Data Base Updated
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -passin pass:'supersecretpassword123' -passout pass:'supersecretpassword123'
chmod g+r server.p12
openssl pkcs12 -in server.p12 -out server.pem -passin pass:'supersecretpassword123' -passout pass:'supersecretpassword123'
chmod g+r server.pem
server.pem: OK
root@Debian-VM:/etc/freeradius/3.0/certs#
Tenslotte, de client certs
root@Debian-VM:/etc/freeradius/3.0/certs# nano client.cnf
En weer aanpassen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ req ]
prompt                  = no
distinguished_name      = client
default_bits            = 2048
input_password          = supersecretpassword123
output_password         = supersecretpassword123

[client]
countryName             = NL
stateOrProvinceName     = Netherlands
localityName            = Amsterdam
organizationName        = EAP-TLS voor dummies united
emailAddress            = youknownothinJS@eap-tls4dummies.org
commonName              = youknownothinJS@eap-tls4dummies.org


Opslaan en maken:
root@Debian-VM:/etc/freeradius/3.0/certs# make client
openssl req -new -out client.csr -keyout client.key -config ./client.cnf
Generating a RSA private key
.....+++++
............................................................+++++
writing new private key to 'client.key'
-----
chmod g+r client.key
openssl ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key supersecretpassword123' -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf
Using configuration from ./client.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 2 (0x2)
Validity
Not Before: Jul 27 12:27:08 2021 GMT
Not After : Sep 25 12:27:08 2021 GMT
Subject:
countryName = NL
stateOrProvinceName = Netherlands
organizationName = EAP-TLS voor dummies united
commonName = youknownothinJS@eap-tls4dummies.org
emailAddress = youknownothinJS@eap-tls4dummies.org
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 CRL Distribution Points:

Full Name:
URI:http://www.example.com/example_ca.crl

Certificate is to be certified until Sep 25 12:27:08 2021 GMT (60 days)

Write out database with 1 new entries
Data Base Updated
openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:'supersecretpassword123' -passout pass:'supersecretpassword123'
chmod g+r client.p12
openssl pkcs12 -in client.p12 -out client.pem -passin pass:'supersecretpassword123' -passout pass:'supersecretpassword123'
chmod g+r client.pem
cp client.pem 'youknownothinJS@eap-tls4dummies.org'.pem
root@Debian-VM:/etc/freeradius/3.0/certs#
In certs map staan nu een boel certificaat bestanden. Voor linux gebruiken we voor nu de PEM en KEY bestanden.

NB: er staan ook CRT en P12 bestanden. Het lijkt er dus op dat er al gesigneerde certificaten zijn voor clienten zoals bijvoorbeeld een Windows machine Maar dat blijkt niet zo te zijn. Ik kom hier later op terug.

Vreemd genoeg, hoewel de certmap dus de standaard certdir is voor freeradius, alles wat je aanmaakt moet nog de juiste toegangsrechten krijgen voor freeradius om ze te kunnen gebruiken.
Voor het gemak passen we alles maar aan.
root@Debian-VM:/etc/freeradius/3.0/certs# chown freerad:freerad *.*
Nu moeten we Freeradius configureren voor TLS met de nieuwe certificaten. Hiervoor bewerken we het bestand ‘EAP’
root@Debian-VM:/etc/freeradius/3.0/certs# cd ..
root@Debian-VM:/etc/freeradius/3.0# cd mods-enabled
root@Debian-VM:/etc/freeradius/3.0/mods-enabled# nano eap
In de file, zoek op en pas aan de volgende zaken:

code:
1
default_eap_type = md5


wordt

code:
1
default_eap_type = tls



code:
1
2
3
tls-config tls-common {
                private_key_password = whatever
                private_key_file = /etc/ssl/private/ssl-cert-snakeoil.key


wordt

code:
1
2
3
tls-config tls-common {
                private_key_password = supersecretpassword123
                private_key_file = ${certdir}/server.key



code:
1
certificate_file = /etc/ssl/certs/ssl-cert-snakeoil.pem


wordt

code:
1
certificate_file = ${certdir}/server.pem



code:
1
ca_file = /etc/ssl/certs/ca-certificates.crt


wordt

code:
1
ca_file = ${certdir}/ca.pem



code:
1
#   tmpdir = /tmp/radiusd


wordt

code:
1
tmpdir = /var/tmp/radiusd
(verwijder de #)


Opslaan en afsluiten


NB: De EAP file heeft al wat voorbeeld certificaten (‘snakeoil’) gedefinieerd voor Freeradius. Het wordt afgeraden om deze anders te gebruiken dan voor test. In deze handleiding worden in zijn geheel niet gebruikt.
De ${certdir} variabele wordt gedefinieerd in de radiusd.conf file. Standaard is die dus /etc/freeradius/3.0/certs. Als je een ander cert dir wil, kan je het beste dat daar aanpassen.
Het is mij niet duidelijk waarom de aangegeven ‘standaard’ tempdir in de /tmp dir staat, deze wordt standaard bij elke reboot geleegd. Dit heeft als gevolg dat freeradius niet start als je tempdir daarin staat.


Nog even de temp dir aanmaken
root@Debian-VM:/etc/freeradius/3.0# mkdir /var/tmp/radiusd
En de rechten aanpassen voor freeradius
root@Debian-VM:/etc/freeradius/3.0# chown freerad:freerad /var/tmp/radiusd
NB: freeradius checkt de rechten van deze dir. Als die ‘te ruim’ zijn (bijvoorbeeld toegankelijk voor iedereen) dan zal de freeradius service niet starten om veiligheidsoverwegingen.

Check of alles nog werkt door freeradius weer in debug mode te starten
root@Debian-VM:/etc/freeradius/3.0/certs# freeradius -X
Geen rode letters? Ok dan kunnen we door.

Testen op je Linux-bak

Deze stap kan je overslaan, maar kan inzicht geven als dingen niet werken met Windows/Android/IOS. Daarom dat ik het toch even behandel.
Met wat installatie en configuratie, maken we een soort NAS en client op je linux bak. Daarvoor gebruiken we onder andere software genaamd WPA_supplicant.
Deze moet je manueel downloaden en uitpakken. Om te kijken wat de laatste versie is, check https://w1.fi/wpa_supplicant/. Op deze pagina staat ook de download link. In mijn geval was het versie 2.9.
root@Debian-VM:/etc/freeradius/3.0/certs# exit
logout
ijsblok@Debian-VM:~$ wget https://w1.fi/releases/wpa_supplicant-2.9.tar.gz
--2021-07-27 16:38:18-- https://w1.fi/releases/wpa_supplicant-2.9.tar.gz
Resolving w1.fi (w1.fi)... 212.71.239.96
Connecting to w1.fi (w1.fi)|212.71.239.96|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3231785 (3.1M) [application/x-gzip]
Saving to: ‘wpa_supplicant-2.9.tar.gz’

wpa_supplicant-2.9. 100%[===================>] 3.08M --.-KB/s in 0.1s

2021-07-27 16:38:18 (31.3 MB/s) - ‘wpa_supplicant-2.9.tar.gz’ saved [3231785/3231785]

ijsblok@Debian-VM:~$
NB: de link ‘https://w1.fi/releases/wpa_supplicant-2.9.tar.gz’ is een copy/paste van de download link op eerder genoemde pagina.

Dan uitpakken
ijsblok@Debian-VM:~$ tar -zxvf wpa_supplicant-2.9.tar.gz
Copy maken van een config file om te bewerken
ijsblok@Debian-VM:~$ cd wpa_supplicant-2.9/wpa_supplicant
ijsblok@Debian-VM:~/wpa_supplicant-2.9/wpa_supplicant$ cp defconfig .config
ijsblok@Debian-VM:~/wpa_supplicant-2.9/wpa_supplicant$ nano .config
Zoek op en pas aan

code:
1
# CONFIG_EAPOL_TEST=y


Wordt

code:
1
CONFIG_EAPOL_TEST=y
(verwijder de #)

Opslaan, afsluiten.

Nu moeten we eapol_test maken, maar daarvoor is eerst wat additionele meuk nodig.
ijsblok@Debian-VM:~/wpa_supplicant-2.9/wpa_supplicant$ sudo apt install -y make gcc wget pkg-config libssl-dev libdbus-1-dev libnl-3-dev libnl-genl-3-dev
Ok, nu kunnen we het maken.
ijsblok@Debian-VM:~/wpa_supplicant-2.9/wpa_supplicant$ sudo make eapol_test
Indien allemaal voltooid zonder errors, dan kan je eapol_test beste even kopiëren naar een PATH dir.
ijsblok@Debian-VM:~/wpa_supplicant-2.9/wpa_supplicant$ sudo cp eapol_test /usr/local/bin
We maken een configuratie file aan voor de test. En bewerken die.
ijsblok@Debian-VM:~/wpa_supplicant-2.9/wpa_supplicant$ cd
ijsblok@Debian-VM:~$ nano eapol_test.conf
Dit zetten we erin:


code:
1
2
3
4
5
6
7
8
9
network={
        key_mgmt=IEEE8021X
        eap=TLS
        identity="ijsblok"      
        client_cert="/etc/freeradius/3.0/certs/client.pem"
        private_key="/etc/freeradius/3.0/certs/client.key"
        private_key_passwd="supersecretpassword123"
        ca_cert="/etc/freeradius/3.0/certs/ca.pem"
}



NB: voor de test kan je bij identity alles invullen wat je wilt, heeft weinig invloed op het eindresultaat. Wel kan je in de logs zien dat wat je invult wellicht niet bestaat. Je kunt dit ‘mooier’ maken door een user met dezelfde naam aan te maken in de ‘users’ file.

Nu kan je testen. Open een extra terminal naar je Linux bak, zodat je er twee hebt.
In de ene start je freeradius in debug mode
ijsblok@Debian-VM:~$ nano freeradius -X
In de andere start je de eapol_test test.
ijsblok@Debian-VM:~$ sudo eapol_test -a 127.0.0.1 -p 1812 -s testing123 -c eapol_test.conf
Als het eindigt met SUCCESS dan werkt het. Met FAILURE dus niet. Je zou dan kunnen natrekken waar het fout gaat door het achtergebleven log te bekijken. Als deze handleiding nog recent is, dan is de kans het grootst dat je iets uit deze handleiding niet juist hebt overgenomen. Als deze handleiding oud is… sterkte...

Nu je een werkende Freeradius voor EAP-TLS hebt opgeleverd, kan je Freeradius als een service gereed maken. Beëindig de debug mode, als die die nog aan staat.
Dan configureer Freeradius te starten bij boot
ijsblok@Debian-VM:~$ sudo systemctl enable freeradius
En dan start Freeradius
ijsblok@Debian-VM:~$ sudo systemctl start freeradius
Gefeliciteerd, je server werkt nu (hopelijk).

Configuratie NAS

Ik heb hier geen handleiding voor want ik ken je NAS niet. Maar zorg ervoor dat je NAS een SSID heeft met WPA2 (enterprise) 802.1x authenticatie, en dat er een RADIUS server is geconfigureerd met het IP-adres van je linux-bak en het wachtwoord wat je eerder in clients.conf hebt opgegeven.

Certificaten opnieuw aanmaken/signeren voor Windows/Android/IOS

Zoals eerdergenoemd, is mijn ervaring dat de certificaten zoals aangeboden in de /certs map niet gereed blijken te zijn voor iets anders dan linux, hoewel veel documentatie anders beweerd. Ik weet niet hoe dat komt, maar ik krijg foutmeldingen in Windows als ik de huidige ca certs en client certs (p12) probeer te importeren in Windows, en Android lijkt er ook geen raad mee te weten. Sterker nog, ik krijg het niet voor elkaar om werkende certificaten te creëren door de boel opnieuw te te converteren naar de juiste format en/of te signeren met openssl in Linux. Gelukkig werkt het (gek genoeg) wel met openssl op Windows. En gelukkig zijn de basis bestanden wél goed.

Dus pak je Windows bak er bij en installeer openssl hier: https://slproweb.com/products/Win32OpenSSL.html
Light versie is voldoende.

Wanneer geïnstalleerd is het handig om de openssl.exe (te vinden in je installatiemap) te kopiëren naar %windir%/system32, of op andere manier in PATH te hebben.

Vervolgens zorg je dat de volgende bestanden in een map staan op je Windows-bak, ze staan in de /certs map van freeradius:
Ca.pem
Client.key
[email@adres.nl].pem (in mijn geval youknownothinJS@eap-tls4dummies.org.pem)

Hoe je daar krijgt hangt van je omstandigheden af. Google het eventueel.

Wanneer eenmaal gereed, open een command prompt, en ga naar de map waar je bestanden hebt gelaten. En voer het volgende uit
D:\certs>openssl x509 -outform der -in ca.pem -out ca.crt
Nu is een root cert gemaakt wat werkt buiten linux. Nu nog het client certificaat:
D:\certs>openssl pkcs12 -in [email@adres.nl].pem -inkey client.key -certfile ca.pem -export -out client.p12
Enter pass phrase for client.key:
Enter Export Password:
Verifying - Enter Export Password:

D:\certs>
Bij [email@adres.nl].pem heb ik dus youknownothinJS@eap-tls4dummies.org.pem opgegeven. Bij ‘Enter pass phrase for client.key:’ vul je het wachtwoord ‘Supersecretpassword123’ of datgene wat je zelf eerder verzonnen hebt. Bij ‘Enter Export Password:’ verzin je weer een nieuw wachtoord (mag hetzelfde wachtwoord zijn als wat je zojuist hebt gebruikt).

Nu is er een werkende client cert aangemaakt.

NB: Je kunt deze commando’s precies zo uitvoeren op je linux bak. Maar ik heb de ervaring dat het om onduidelijke redenen niks werkends oplevert.

Nu gaan we de gemaakte certificaten (ca.crt en client.p12) installeren op de verschillende besturingssystemen.

Windows 10 (20H2)

Dubbelklik ca.crt


Klik 'Install Certificate...'


Selecteer ‘Local machine’ en Next


Gewoon zo laten, klik ‘next’


Klik Finish

Dubbelklik client.p12


Kan je zo laten, klik Next


Klik Next


Vul het export wachtwoord in wat je hebt opgegeven bij aanmaken van het certificaat in Windows. Klik Next


Kan je zo laten. Klik Next


Klik finish

Ga naar settings --> Network & Internet --> Wifi


Klik op ‘Manage known networks’


Klik ‘Add a new network’


Tik bij “network Name’ het SSID van je NAS wat geconfigureerd is voor 802.1x. In dit voorbeeld heet hij 'Hyperv'. Bij ‘Security type’ selecteer je ‘WPA2-Enterprise AES’, bij ‘EAP Method’ selecteer je ‘Smart Card or other certifcate’. Klik ‘Save’


Dan selecteer de SSID van de lijst


Klik ‘Connect’


Klik ‘Connect’


Jeej! Verbonden! *O*

Android 10

Zorg ervoor dat ca.crt en client.p12 die je aangemaakt hebt in Windows, in de /downloads map staan van je android apparaat.

Ga dan naar Settings --> Biometrics and security --> Other security settings


Tap ‘Install from device storage’


Begin met ca.crt. tap ‘done’


Geef het een makkelijk te herkennen naam. Tap ‘OK’


Doe nu de client.p12. Tap ‘Done’


Vul het export wachtwoord in wat je eerder hebt ingegeven bij het maken van het certificaat in Windows. Tap ‘OK’


Geef het een herkenbare naam. Tap ‘OK’

Ga nu naar je WIFI settings en tap je 802.1x SSID. In dit voorbeeld 'Hyperv'


Selecteer zoals in plaatje. Je moet iets invullen bij ‘Identity’ anders werkt het mogelijk niet. Maakt niet uit wat. Klik op ‘Connect’


Jeej! Verbonden! *O*

Android 11

In android 11 werkt het vrijwel hetzelfde als in Android 10. Maar er is een belangrijk verschil bij het verbinden naar je 802.1x SSID:


Er is een extra veld bijgekomen, ‘Domain’. Hier moet je de naam invullen wat je hebt opgeven bij ‘commonName’ van het server certificaat.

NB: In een grote-mensen-omgeving zal je waarschijnlijk hier iets anders moeten opgeven. Google het.

IOS

Hier is een link van iemand die het werk al zo'n beetje voor me gedaan heeft, dus die kan je volgen ;)

https://apple.stackexchange.com/questions/326208/how-do-i-configure-an-ipad-to-use-eap-tls

In deze handleiding wordt als bron de webpagina van Mikrotik router gebruikt. Maar je kunt de CA.crt en de client.p12 ook per mail sturen als attachments naar het emailadres wat geconfigureerd staat in de standaard mail app van je Apple device, en vandaar 'openen' (dubbeltappen). Pak het dan weer op waar in de handleiding het deel 'Configure CLIENT PROFILE:' begint.

Succes!

  • Frogmen
  • Registratie: Januari 2004
  • Niet online
De vraag die nu bij mij opkomt hoe ga je voorkomen dat dit certificaat net zo rondgaat als je wachtwoord?

Voor een Tweaker is de weg naar het resultaat net zo belangrijk als het resultaat.


  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Frogmen schreef op maandag 2 augustus 2021 @ 11:22:
De vraag die nu bij mij opkomt hoe ga je voorkomen dat dit certificaat net zo rondgaat als je wachtwoord?
Security by obscurity ;o)
Zo'n certificaat is veel te moeilijk om te onthouden

QnJhaGlld2FoaWV3YQ==


  • Frogmen
  • Registratie: Januari 2004
  • Niet online
Brahiewahiewa schreef op maandag 2 augustus 2021 @ 11:37:
[...]

Security by obscurity ;o)
Zo'n certificaat is veel te moeilijk om te onthouden
Je bedoelt dat deze niet gedeeld kan worden in een app groep 8)7

Voor een Tweaker is de weg naar het resultaat net zo belangrijk als het resultaat.


  • ijsblok
  • Registratie: Februari 2001
  • Laatst online: 23-12-2022
Frogmen schreef op maandag 2 augustus 2021 @ 11:22:
De vraag die nu bij mij opkomt hoe ga je voorkomen dat dit certificaat net zo rondgaat als je wachtwoord?
Goede vraag, geen idee in genoemd scenario.

Normaliter wordt EAP-TLS in een professionele omgeving uitgerold met een MDM (IOS/Android) of AD Policies (Windows). Eindgebruikers krijgen normaalgesproken geen mogelijkheden om de ontvangen certificaten te bekijken/exporteren op hun device.

Ik vind het in elk geval beter dan het standaard WIFI wachtwoord waar sommige bedrijven nog steeds mee werken dat zogenaamd 'geheim' moet blijven, maar dat je als eindgebruiker na verloop van tijd de uitzondering bent als je het wachtwoord NIET weet :+

  • Frogmen
  • Registratie: Januari 2004
  • Niet online
Tja je kan je afvragen in zo'n geval waarom vraag je dan een wachtwoord. Anderzijds kijk waartegen je je netwerk moet beschermen als het niks anders is dan internet toegang laat het dan en zet het open is het in ieder geval duidelijk dat het een open onveilig netwerk is.

Voor een Tweaker is de weg naar het resultaat net zo belangrijk als het resultaat.


  • elpino.rv
  • Registratie: Januari 2006
  • Laatst online: 19:21
Ik wil EAP-TTLS (we willen geen client certificaten), maar je uitleg was handig om dit voor elkaar te krijgen.

Voornamelijk hoe certificaten te genereren in Linux, dat deze gebruikt worden in FreeRADIUS en hierna CA certificaat te installeren op Windows.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee