Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:eduroam:easyroam [2024/11/22 17:02] – [Installation der easyroam Profile auf Linux Geräten] Ralf Paffrathde:eduroam:easyroam [2024/12/01 11:28] (aktuell) – [Installation der eduroam Profile auf ANDROID, wenn alle Stricke reißen] Ralf Paffrath
Zeile 13: Zeile 13:
 In eduroam gibt es neben anderen Verfahren zur Anmeldung die Authentifizierungsmethode EAP-TLS. Bei dieser Methode kommen ausschließlich Client/Nutzer Zertifikate für die Anmeldung zum Einsatz. Diese Zertifikate für eduroam können die eduroam Nutzenden auf www.easyroam.de nur generieren, wenn sie im Besitz einer gültigen DFN-AAI IdP Kennung mit Opt-In sind. Die eduroam Client/Server Zertifikate sind Teil einer "Self-Signed PKI" und können nur in eduroam eingesetzt werden. Der easyroam Server speichert ausschließlich nur die Pairwise - ID (Pseudonym) des DFN-AAI IdP Accounts und die Seriennummer des Client/Nutzer Zertifikats. Letzteres ist auch Teil der Roaming Identität. Eine Besonderheit gegenüber aktuellen EAP-TLS Angeboten ist, dass die eduroam Nutzenden nicht mehr mit Namen im Zertifikat erkennbar sind. Somit ist es unmöglich Bewegungsprofile der eduroam Nutzenden zu erstellen. Jedoch ist es möglich, eine Zuordnung zwischen Pairwise - ID und Zertifikats-Seriennummer herzustellen und den eduroam Nutzenden eindeutig mit einer Person in Verbindung zu bringen. Somit ist man nicht generell anonym in eduroam unterwegs, wie das auch bisher der Fall ist. In eduroam gibt es neben anderen Verfahren zur Anmeldung die Authentifizierungsmethode EAP-TLS. Bei dieser Methode kommen ausschließlich Client/Nutzer Zertifikate für die Anmeldung zum Einsatz. Diese Zertifikate für eduroam können die eduroam Nutzenden auf www.easyroam.de nur generieren, wenn sie im Besitz einer gültigen DFN-AAI IdP Kennung mit Opt-In sind. Die eduroam Client/Server Zertifikate sind Teil einer "Self-Signed PKI" und können nur in eduroam eingesetzt werden. Der easyroam Server speichert ausschließlich nur die Pairwise - ID (Pseudonym) des DFN-AAI IdP Accounts und die Seriennummer des Client/Nutzer Zertifikats. Letzteres ist auch Teil der Roaming Identität. Eine Besonderheit gegenüber aktuellen EAP-TLS Angeboten ist, dass die eduroam Nutzenden nicht mehr mit Namen im Zertifikat erkennbar sind. Somit ist es unmöglich Bewegungsprofile der eduroam Nutzenden zu erstellen. Jedoch ist es möglich, eine Zuordnung zwischen Pairwise - ID und Zertifikats-Seriennummer herzustellen und den eduroam Nutzenden eindeutig mit einer Person in Verbindung zu bringen. Somit ist man nicht generell anonym in eduroam unterwegs, wie das auch bisher der Fall ist.
  
-Die Server Software ist eine .NET Entwicklung in C-Sharp geschrieben. Es wurde bewusst auf PHP verzichtet, da PHP nicht die Server Sicherheit bot, die an die Server Software gelegt wurde. Der Server unterstützt aktuell drei Sprachen: Deutsch, Englisch und Chinesisch (wird zur Zeit überarbeitet)+Die Server Software ist eine .NET Entwicklung in C-Sharp geschrieben. Es wurde bewusst auf PHP verzichtet, da PHP nicht die Server Sicherheit bot, die an die Server Software gelegt wurde. Der Server unterstützt aktuell zwei Sprachen: Deutsch und Englisch
  
 Die Anleitungen auf einem Blick finden die easyroam Nutzenden [[https://doku.tid.dfn.de/de:eduroam:easyroam-anleitungen|hier]]. Die Anleitungen auf einem Blick finden die easyroam Nutzenden [[https://doku.tid.dfn.de/de:eduroam:easyroam-anleitungen|hier]].
Zeile 274: Zeile 274:
 Domain: easyroam.eduroam.de Domain: easyroam.eduroam.de
 Nutzerzertifikat auswählen: Dateinamen, den man, s. oben, beim Einlesen der PKCS12-Datei vergeben hat, auswählen, z.B. MyAndroidCert</code> Nutzerzertifikat auswählen: Dateinamen, den man, s. oben, beim Einlesen der PKCS12-Datei vergeben hat, auswählen, z.B. MyAndroidCert</code>
-<alert>ACHTUNG: Als Identität gibt man die Seriennummer des easyroam Pseudozertifikats an, gefolgt vom easyroam Realm der EIGENEN!!! Einrichtung. +<alert>ACHTUNG: Die hier aufgeführten Beispiele sind als Illustration gedacht und sollten keinesfalls unreflektiert via copy + paste übernommen werden! \\ \\ Als Identität gibt man die Seriennummer des easyroam Pseudozertifikats an, gefolgt vom easyroam Realm der EIGENEN!!! Einrichtung. 
 Beispiel: Wenn vorher der Realm anonymous@dfn.de oder anonymous@uni-greifswald.de eingegeben wurde, muss nun vor dem dfn.de oder vor uni-greifswald.de ein easyroam-pca stehen, mit Angabe der Seriennummer des Pseudozertifikats, z.B. 12345678910@easyroam-pca.dfn.de oder 12345678910@easyroam-pca.uni-greifswald.de. Die Seriennummer und der Realm, also 12345678910@easyroam-pca.dfn.de und 12345678910@easyroam-pca.uni-greifswald.de sind in der Anleitung hier nur Beispiele, bitte nicht übernehmen!!!  Beispiel: Wenn vorher der Realm anonymous@dfn.de oder anonymous@uni-greifswald.de eingegeben wurde, muss nun vor dem dfn.de oder vor uni-greifswald.de ein easyroam-pca stehen, mit Angabe der Seriennummer des Pseudozertifikats, z.B. 12345678910@easyroam-pca.dfn.de oder 12345678910@easyroam-pca.uni-greifswald.de. Die Seriennummer und der Realm, also 12345678910@easyroam-pca.dfn.de und 12345678910@easyroam-pca.uni-greifswald.de sind in der Anleitung hier nur Beispiele, bitte nicht übernehmen!!! 
 Die Identität ist in der Regel der CN (Common Name) des easyroam Pseudozertifikats. Die Übereinstimmung von Identität und CN im easyroam Pseudozertifikat wird vom RADIUS Server geprüft. Ohne korrekte Eingabe der Identität ist keine Anmeldung in eduroam via easyroam möglich. Die Identität ist in der Regel der CN (Common Name) des easyroam Pseudozertifikats. Die Übereinstimmung von Identität und CN im easyroam Pseudozertifikat wird vom RADIUS Server geprüft. Ohne korrekte Eingabe der Identität ist keine Anmeldung in eduroam via easyroam möglich.
Zeile 288: Zeile 288:
  
 ==== Installation der easyroam Profile auf Linux Geräten ==== ==== Installation der easyroam Profile auf Linux Geräten ====
 +=== Extrahieren der erforderlichen Zertifikate aus der easyroam PKCS12 Datei === 
 Die Nutzung von easyroam ist selbstverständlich auch auf Linux Derivaten möglich. Leider gibt es keine allgemein gültige Anleitung. Im folgenden wird beschrieben wie die einzelnen Komponenten, die bei einer manuellen Konfiguration von easyroam auf Linux Geräten benötigt werden, aus dem easyroam Portal gewonnen werden können: Die Nutzung von easyroam ist selbstverständlich auch auf Linux Derivaten möglich. Leider gibt es keine allgemein gültige Anleitung. Im folgenden wird beschrieben wie die einzelnen Komponenten, die bei einer manuellen Konfiguration von easyroam auf Linux Geräten benötigt werden, aus dem easyroam Portal gewonnen werden können:
  
Zeile 357: Zeile 357:
 echo "Done." echo "Done."
 </code> </code>
- +=== Verwendung der extrahierten easyroam Profile am Beispiel des Netzwerk Managers mit der Bezeichnung netctl === 
-6. Es finden sich in der Tat Anleitungen im Netz, um EAP-TLS auf diversen Network Managern aus den angegebenen Komponenten zu konfigurieren. Exemplarisch wird anhand des CLI netctl auf Archlinux gezeigt wie EAP-TLS und damit easyroam/eduroam auf einem Linux Gerät konfiguriert werden kann. Folgendes wird vorausgesetzt:+ Folgendes wird vorausgesetzt:
   * easyroam_extract.sh aufgerufen   * easyroam_extract.sh aufgerufen
   * netctl   * netctl
Zeile 373: Zeile 373:
     'eap=TLS'     'eap=TLS'
     'proto=WPA RSN'     'proto=WPA RSN'
-    'identity="76673789883214453797@easyroam.realm_der_einrichtung.tld"'   # <---- Hier muss der CN (Common Name), also der Wert der Datei /etc/easyroam-certs/identity s. Beispiel links. Auf keinen Fall die Pairwise-ID eingeben!!!!!+    'identity="76673789883214453797@easyroam.realm_der_einrichtung.tld"'   # <---- Hier muss der CN (Common Name), also der Wert aus der Datei /etc/easyroam-certs/identity s. Beispiel links. Auf keinen Fall die Pairwise-ID eingeben!!!!!
     'client_cert="/etc/easyroam-certs/easyroam_client_cert.pem"'     'client_cert="/etc/easyroam-certs/easyroam_client_cert.pem"'
     'private_key="/etc/easyroam-certs/easyroam_client_key.pem"'     'private_key="/etc/easyroam-certs/easyroam_client_key.pem"'
Zeile 382: Zeile 382:
 ) </code> ) </code>
 Mit Root Rechten wird folgendes Kommando aufgerufen:<code>netctl start easyroam </code>Soll permanent easyroam installiert werden, so wird folgendes Kommando aufgerufen:<code>netctl enable easyroam</code> Mit Root Rechten wird folgendes Kommando aufgerufen:<code>netctl start easyroam </code>Soll permanent easyroam installiert werden, so wird folgendes Kommando aufgerufen:<code>netctl enable easyroam</code>
 +
 +=== Verwendung der extrahierten easyroam Profile am Beispiel des Netzwerk Managers mit der Bezeichnung NetworkManager (nmcli) ===
 +
 +Nachdem die Schritte 1. bis 5. ausgeführt und die easyroam Zertifikate extrahiert wurden, wird folgendes Script aufgerufen, welches auf der Grundlage des {{ :de:eduroam:easyroam_nmcli.sh |Script}} der [[https://rz.uni-greifswald.de/dienste/technische-infrastruktur/wlan-eduroam/linux/|Universität Greifswald]] angepasst wurde:
 +<code>
 +#!/bin/bash
 +
 +# Usage: bash   easyroam_nmcli.sh
 +
 +set -e
 +
 +# check if we are root
 +
 +if [[ $EUID -ne 0 ]]; then
 +    echo "You must be root to run easyroam_nmcli.sh." 1>&2
 +    exit 100
 +fi
 +
 +# check for easyroam-cert files
 +
 +[ -d /etc/easyroam-certs ] && ConfDir=/etc/easyroam-certs || { echo "Aborted, run easyroam_extract.sh first!"; exit 1;  }
 +[ -f /etc/easyroam-certs/easyroam_client_cert.pem ] ||  { echo "Aborted, client_cert missing."; exit 1;  }
 +[ -f /etc/easyroam-certs/easyroam_root_ca.pem ] ||  { echo "Aborted, root_ca missing."; exit 1;  }
 +[ -f /etc/easyroam-certs/easyroam_client_key.pem ] ||  { echo "Aborted, client_key missing."; exit 1;  }
 +[ -f /etc/easyroam-certs/identity ] && Identity=$(cat "$ConfDir/identity") ||  { echo "Aborted, identity missing"; exit 1;  }
 +
 +Pwd="pkcs12"
 +# check for nmcli
 +
 +if ! type nmcli >/dev/null 2>&1; then
 +        echo ""
 +        echo "ERROR: nmcli not found!" >&2
 +        echo "This wizard assumes that your network connections are NOT managed by NetworkManager." >&2
 +        echo ""
 +        exit 1
 +fi
 +
 +# check for wifi device
 +
 +if ! nmcli -g TYPE,DEVICE device | grep wifi >/dev/null; then
 +        echo ""
 +        echo "ERROR: Unable to find any wifi device!" >&2
 +        echo ""
 +        exit 1
 +fi
 +
 +
 +# configure parameters
 +
 +WIntName=$(iw dev | awk '$1=="Interface"{print $2}')
 +
 +WOn="GENERAL.STATE:"
 +
 +WLANName="eduroam"
 +
 +ALT_SUBJECT="DNS:easyroam.eduroam.de"
 +
 +# TLS_1.3
 +TLS_VERSION="0x100"
 +
 +# Remove existing connections
 +
 +nmcli connection show | \
 +        awk '$1==c{ print $2 }' c="$WLANName" | \
 +        xargs -rn1 nmcli connection delete uuid
 +
 +# switch wlan on
 +
 +nmcli dev show "$WIntName" | \
 +      awk '$1==c{ print $2 }' c="$WOn" | \
 +      xargs -rn1 nmcli radio wifi on
 +
 +# Create new connection
 +
 +nmcli connection add \
 +        type wifi \
 +        con-name "$WLANName" \
 +        ssid "$WLANName" \
 +        -- \
 +        wifi-sec.key-mgmt wpa-eap \
 +        802-1x.eap tls \
 +        802-1x.altsubject-matches "$ALT_SUBJECT" \
 +        802-1x.phase1-auth-flags "$TLS_VERSION" \
 +        802-1x.identity "$Identity" \
 +        802-1x.ca-cert "$ConfDir/easyroam_root_ca.pem" \
 +        802-1x.client-cert "$ConfDir/easyroam_client_cert.pem" \
 +        802-1x.private-key-password "$Pwd" \
 +        802-1x.private-key "$ConfDir/easyroam_client_key.pem"
 + </code>    
 +<alert>Im File /etc/NetworkManager/NetworkManager.conf kann mit \\
 +\\
 +[device]\\
 +wifi.scan-rand-mac-address=yes \\
 +\\
 +die Randomisierung der MAC-Adresse konfiguriert werden.</alert>
 +        
 +
 +
  
 ==== Installation der easyroam Profile auf Linux Geräten ohne Desktop Umgebung (wpa-supplicant only) ==== ==== Installation der easyroam Profile auf Linux Geräten ohne Desktop Umgebung (wpa-supplicant only) ====
Zeile 392: Zeile 490:
 Ethernetverbindung auf das Gerät gebracht.</alert> Ethernetverbindung auf das Gerät gebracht.</alert>
  
-Um die einzelnen Komponenten wie das Client Zertifikat, der Private Key und das RootCA Zertifikat zu extrahieren wird der CLI von openssl verwendet: + 
-<alert>Bitte beachtendass Import Password der .p12 - Datei ist leer. Bei der Verwendung von openssl auf die Formulierung achtenEnter Import Password mit <Return> quittierenFerner ist zu beachten, dass je nach openssl-Version die Option -legacy in den Kommandos s.u. angegeben werden muss.</alert> +Um die einzelnen Komponenten wie das Client Zertifikat, der Private Key und das RootCA Zertifikat zu extrahieren wird das folgende {{ :de:eduroam:easyroam_extract.sh |Script}} aufgerufenwelches auf der Grundlage des Scripts der [[https://rz.uni-greifswald.de/dienste/technische-infrastruktur/wlan-eduroam/linux/|Universität Greifswald]] angepasst wurde: 
-  * Client Zertifikat:<code>openssl pkcs12 -in my_easyroam_cert.p12 -nokeys | openssl x509 easyroam_client_cert.pem</code+<code> 
-  * CN (Common Name) Extraktion: <code>openssl x509 -noout -subject -in easyroam_client_cert.pem | sed 's/.*CN=\(.*\), C.*/\1/' > CN </code+#!/bin/bash 
-  * Private Key:<alert>Bitte beachten, da der wpa_supplicant in der Regel nur passwortgeschützte Private Keys akzeptieren, muss bei der Extrahierung ein Passwort gesetzt werdenBei folgendem Komando erscheint zunächst Enter Import Passwordalso mit <Return> quittierendann erscheint Enter PEM pass phraseHier gibt man ein neues Password ein und merkt es sich! </alert><code>openssl pkcs12  -in my_easyroam_cert.p12 -nodes -nocerts | openssl rsa -aes256 -out easyroam_client_key.pem</code> +# This script extract all the necessary information from the easyroam PKCS12 File and put it under /etc/easyroam-certs 
-  * RootCA Zertifikat:<code>openssl pkcs12 -in my_easyroam_cert.p12 -cacerts -nokeys > easyroam_root_ca.pem</code+ 
-  * Die .p12 auf einem Blick:<code>openssl pkcs12 -info -in my_easyroam_cert.p12 -nodes</code> +# Usage:   bash easyroam_extract.sh <YOUR-PKCS12-File> 
-  Anlegen eines Verzeichnis für die easyroam Zertifikatsumgebung:<code>sudo mkdir /etc/easyroam-certs  +set -e 
-sudo mv easyroam_client_cert.pem CN easyroam_client_key.pem easyroam_root_ca.pem /etc/easyroam-certs/. + 
-    </code> +# check if we are root 
-  Die wpa_supplicant.conf im Verzeichnis /etc/wpa_supplicant:<code>ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev+ 
 +if [[ $EUID -ne 0 ]]; then 
 +    echo "You must be root to run easyroam_extract.sh." 1>&2 
 +    exit 100 
 +fi 
 + 
 + 
 +ConfDir="/etc/easyroam-certs" 
 + 
 +-d "$ConfDir" ] || mkdir -p "$ConfDir" 
 + 
 +# check input file 
 + 
 +if [ -z "$1" ]; then 
 +        echo "" 
 +        echo "Your pkcs12 file is missed as input parameter.
 +        echo "" 
 +        exit 1 
 +else 
 +        InputFile="$1" 
 +fi 
 +# set openssl legacy options if necessary 
 + 
 +LegacyOption= 
 +OpenSSLversion=$(openssl version | awk '{print $2}' | sed -e 's/\..*$//'
 +if [ "$OpenSSLversion" -eq "3" ]; then 
 +        LegacyOption="-legacy" 
 +fi 
 + 
 +# check pkcs12 file 
 + 
 +Pwd="pkcs12" 
 + 
 +if ! openssl pkcs12 -in "$InputFile" $LegacyOption -info -passin pass: -passout pass:"$Pwd" > /dev/null 2>&1; then 
 +        echo "" 
 +        echo "ERRORThe given input file does not seem to be a valid pkcs12 file.
 +        echo "" 
 +        exit 1 
 +fi 
 + 
 + 
 +# extract keycertca and identity 
 + 
 +openssl pkcs12 -in "$InputFile" $LegacyOption -nokeys -passin pass: -out "$ConfDir/easyroam_client_cert.pem" 
 +openssl pkcs12 -in "$InputFile" $LegacyOption -nocerts -passin pass: -passout pass:"$Pwd" -out "$ConfDir/easyroam_client_key.pem" 
 +openssl pkcs12 -info -in "$InputFile" $LegacyOption -nokeys -passin pass: -out "$ConfDir/easyroam_root_ca.pem" > /dev/null 2>&1 
 +openssl x509 -noout -in "$ConfDir/easyroam_client_cert.pem" -subject | awk -F \, '{print $1}' | sed -e 's/.*=//-e 's/\s*//' >  "$ConfDir/identity" 
 +echo "Done." 
 +</code> 
 +Die wpa_supplicant.conf im Verzeichnis /etc/wpa_supplicant:<code>ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 update_config=1 update_config=1
 country=DE country=DE
Zeile 414: Zeile 561:
    pairwise=CCMP    pairwise=CCMP
    group=CCMP    group=CCMP
-   identity="12345678910111213abcd@easyroam-pca.dfn.de # <---- Hier einfach die CN Datei mit einem Editor vim oder vi einlesen+   identity="12345678910111213abcd@realm_der_einrichtung.tld  # <---- Hier muss der CN (Common Name), also der Wert aus der Datei /etc/easyroam-certs/identity s. Beispiel links. Auf keinen Fall die Pairwise-ID eingeben!!!!!
    altsubject_match="DNS:easyroam.eduroam.de"    altsubject_match="DNS:easyroam.eduroam.de"
    ca_cert="/etc/easyroam-certs/easyroam_root_ca.pem"    ca_cert="/etc/easyroam-certs/easyroam_root_ca.pem"
    client_cert="/etc/easyroam-certs/easyroam_client_cert.pem"    client_cert="/etc/easyroam-certs/easyroam_client_cert.pem"
    private_key="/etc/easyroam-certs/easyroam_client_key.pem"    private_key="/etc/easyroam-certs/easyroam_client_key.pem"
-   private_key_passwd="secretphrase"+   private_key_passwd="pkcs12"
 }</code> }</code>
 <code>sudo reboot</code> <code>sudo reboot</code>
  • Zuletzt geändert: vor 4 Monaten