Freeradius Zertifikate für Server und Client eap-tls Authentifizierung

Für die EAP-TLS Authentifizierung werden mindestens 3 Zertifikate gebraucht, das sind CA-Zertifikat, Server-Zertifikat und Client-Zertifikat. Auf dem Debian Linuxsystem stehen einige Dateien für die Zertifikatserstellung zur Verfügung. Wir müssen die lediglich anpassen und dann die Zertifikate generieren.

Sind die Zertifikate generiert, können wir die in der Freiradius-Konfiguration oder auf dem Client nutzen.
Um ein eigenes Zertifikat zu erstellen, müssen wir zuerst vier Dateien bearbeiten. Das sind Textdateien. In allen Dateien müssen wir fast die gleichen Angaben machen. Es gibts nur kleine Anpassungen. Die Zertifikate werden für 10 Jahre erstellt.

/etc/freeradius/3.0/certs/ca.cnf
/etc/freeradius/3.0/certs/server.cnf
/etc/freeradius/3.0/certs/client.cnf
/etc/freeradius/3.0/certs/xpextensions

Punkt
Die Datei /etc/freeradius/3.0/certs/ca.cnf wird mit einem Texteditor geöffnet und bearbeitet. Die untenstehenden Angaben können wir anpassen und der Rest bleib so wie es ist.

 

[ CA_default ]
...
default_days = 3650
...
crlDistributionPoints = URI:http://www.monoplan.de

...

[ req ]
...
input_password = secret
output_password = secret
...

[certificate_authority]
countryName = DE
stateOrProvinceName = Bayern
localityName = Stein (Mittelfranken)
organizationName = IT-SYS/MBS
emailAddress = admin@mono.plan
commonName = "RadiusZertifikat-ddf1-CA"

[v3_ca]
...
crlDistributionPoints = URI:http://www.monoplan.de

Punkt
Fast die gleichen Daten in der Datei /etc/freeradius/3.0/certs/server.cnf bitte eintragen. Bitte die untenstehenden Angaben anpassen und der Rest bleib so wie es ist.

[ CA_default ]
...
default_days = 3650
...

[ req ]
...
input_password = secret
output_password = secret
...

[server]
countryName = DE
stateOrProvinceName = Bayern
localityName = Stein (Mittelfranken)
organizationName = IT-SYS/MBS
emailAddress = admin@mono.plan
commonName = "RadiusZertifikat-ddf1-Server"

Punkt
Es wird noch die Datei /etc/freeradius/3.0/certs/client.cnf angepasst. Bitte die untenstehenden Angaben anpassen und der Rest bleib so wie es ist. Unter emailAddress und commonName schreiben wir am besten die E-Mail-Adresse passend zu dem Server. Sollten wir vorhaben für jeden Benutzer ein Zertifikat zu erstellen, können wir eine E-Mail-Adresse definieren, die zu dem Benutzer als auch zu dem Server passt. Anhang dieser E-Mail-Adresse wissen wir dann, wem das Zertifikat gehört.

[ CA_default ]
...
default_days = 3650
...

[ req ]
...
input_password = secret
output_password = secret
...

[client]
countryName = DE
stateOrProvinceName = Bayern
localityName = Stein
organizationName = IT-SYS/MBS
emailAddress = ddf1@mono.plan
commonName = ddf1@mono.plan

Punkt
Zum Schuss bearbeiten wir noch die Datei /etc/freeradius/3.0/certs/xpextensions

 

[ xpclient_ext]
extendedKeyUsage = 1.3.6.1.5.5.7.3.2
crlDistributionPoints = URI:http://www.monoplan.de

[ xpserver_ext]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
crlDistributionPoints = URI:http://www.monoplan.de
...
certificatePolicies     = 1.3.6.1.4.1.40808.1.3.2
Punkt
Wir wechseln zu dem Ordner /etc/freeradius/3.0/certs/ und danach werden wir 4 Befehle ausgeführt. Wenn alles korrekt in den Dateien eingetragen war, kommt ein Ergebnis mit OK.

 

root@ddf1:~# cd /etc/freeradius/3.0/certs
root@ddf1:~# openssl rand -out .rand 2048
root@ddf1:~# make ca
root@ddf1:~# make server
root@ddf1:~# make client

 

Die Zertifikate wurden erstellt. Für unsere Zwecke werden die Dateien ca.pem, server.pem und server.key für die Konfiguration des Radius-Dienstes gebraucht.
Die Zertifikate ca.der und client.p12 müssen wir auf den Clients installieren.

Mit dem folgenden Befehl können wir auf shell Ebene den Inhalt des Zertifikates auslesen.
root@ddf1:~# openssl x509 -in server.pem -text -noout

Punkt
Die Zertifikate haben wir als root erstellt. Die Dateien sind lesbar für den Benutzer root und Gruppe root. Das müssen wir selbstverständlich ändern. Die Dateien muss auch der Benutzer freerad und die Gruppe freerad lesen können. Das wird jetzt angepasst, dannach muss man noch den Freeradius-Dienst neu starten.

 

root@ddf1~# cd /etc/freeradius/3.0/certs
root@ddf1~# chown -R freerad:freerad *
root@ddf1~# systemctl restart freeradius.service

Wir haben die gewünschte Zertifikate erstellt und jetzt können wir die in unsere Radius-Konfiguration einbinden als auch auf den Client installieren. Konzept 2/Freeradius-EAP-TLS

Punkt
Es stellt sich noch die Frage, was machen wir, wenn wir mehrere Zertifikate brauchen.
Die zwei Client-Zertifikate client.p12 und client.pem können wir umbenennen auf die Namen, die in der Datei
/etc/freeradius/3.0/certs/client.cnf unter commonName steht. In unserem Fall wäre das ddf1@mono.plan.

root@ddf1~# mv client.p12 ddf1@mono.plan.p12
root@ddf1~# mv client.pem ddf1@mono.plan.pem


Danach kann man wieder die Datei /etc/freeradius/3.0/certs/client.cnf bearbeiten. Die Bezeichnung unter commonName kann man ändern und/oder auch die E-Mail-Adresse, wenn so ein Bedarf existiert. Danach erstellt man mit make das nächste Zertifikat.

root@ddf1:~# make client

 

Mit dieser Methode kann man mehrere Client Zertifikate erstellen und nach Bedarf auf den Clients einsätzen.

Punkt

Um bestimmte Informationen in der Log-Datei zu erhalten, könnten wir noch bestimmte Einträge in der Datei: /etc/freeradius/3.0/radiusd.conf anpassen. Die Einträge befinden sich im Bereich Log in der genannten Datei.

 

# stripped_names = no
stripped_names = yes

# auth = no
auth = yes

auth_badpass = yes
auth_goodpass = no

msg_goodpass = "OK"
msg_badpass = "Falsch"