eduroam meets NixOS

Kurzanleitung zur möglichen Einrichtung von eduroam bei NixOS via wpa_supplicant
eduroam meets NixOS

eduroam meets NixOS

 

 

 

Via configuration.nix (oder wahlweise bei Nutzung von Home Manager via home.nix) folgende Pakete bereitstellen:

cacert, um das Zertifikatpaket für die Verbindung bereitzustellen. (Alternativ funktioniert die Verbindung anscheinend auch ohne Zertifikat.)

 

networking.wireless.enable

 

Das Passwort kann auch als Hash (vom Passwort) abgelegt werden. (Alternativ kann das Passwort auch als Klartext abgelegt werden.) Beim verwendeten Programm wpa_supplicant (durch die Option networking.wireless.enable) wird der veraltete Standard MD4 für den Hash verwendet.

Der Hash vom Passwort kann sich einfach (einmalig) mit dem Paket für den früheren Standard von OpenSSL ermittelt werden.

Entweder einzeilige Kommandos zum (blinden) Einlesen vom Passwort, um den Hash vom Passwort zu ermitteln.

nix-shell -p openssl_legacy --run 'cat - | iconv -t utf16le | openssl md4'
^D
^D
nix-shell -p openssl_legacy --run 'read -s blind_typed_password ; echo -n $blind_typed_passwd | iconv -t utf16le | openssl md4'

Oder einzeilige Kommandos mit dem Passwort das_Passwort (zwischen Anführungsstriche), um den Hash vom Passwort zu ermitteln. [Achtung! Das Passwort wird vermutlich im Verlauf der Kommandozeile gespeichert werden.]

nix-shell -p openssl_legacy --run 'echo -n "das_Passwort" | iconv -t utf16le | openssl md4'

 

Weiter folgende Zeilen in der configuration.nix (wie folgend) oder noch smarter eduroam.nix mit Verweis in der configuration.nix:

  networking.wireless = {
    enable = true;
    networks = {
      eduroam = {
        auth=''
          proto=RSN
          key_mgmt=WPA-EAP
          eap=PEAP
          identity="s23456@htw-dresden.de"
#         password="das_Passwort"
          password=hash:das_Passwort_als_Hash
          #domain_suffix_match="radius.htw-dresden.de"
          domain_suffix_match="radius.htw-dresden.de"
          anonymous_identity="69873312454253036930@htw-dresden.de"
          phase1="peaplabel=0"
          phase2="auth=MSCHAPV2"
          #ca_cert="/etc/ssl/certs/ca-bundle.crt"
          ca_cert="/etc/ssl/certs/ca-bundle.crt"
        '';
      };
    };
  };

 

Abschließen mit nixos-rebuild switch oder home-manager switch.

 

Zack. Fertig. eduroam.

 

networking.networkmanager.enable

 

Alternativ zur deklarativen Beschreibung der Verbindung mit dem Netzwerk eduroam mit networking.wireless.enable (wpa_supplicant) kann auch einfach "herkömmlich" networking.networkmanager.enable (NetworkManager) verwendet werden.

 

Einträge eduroam in der grafischen Oberfläche (graphical user interface (GUI)) für die Anwendung NetworkManager (installiert bei NixOS 23.05. mit der Option networking.networkmanager.enable und der Option für GNOME) 

Der Wert für "Anonyme Identität" ist 69873312454253036930@htw-dresden.de.
Der Wert für "Benutzername" ist die (eigene) individuelle s-Nummer (im Bild s00000) mit der Domain @htw-dresden.de.
Der Wert für "Password" ist das (eigene) individuelle Passwort (für die (eigene) individuelle s-Nummer) (im Bild **************). [Wer das eigene Passwort nicht kennt ist doof.]
Der Wert für "CA-Zertifikat" ist die Datei ca-bundel.crt aus dem Ordner /etc/ssl/certs.

Daraus sollte sich eine Datei für eine Profil der Verbindung für NetworkManager ergeben.
(Der Wert für uuid sollte ein (nahezu beliebiger) durch Zufall generierter Wert sein.)
(Der Wert für interface sollte die Bezeichnung der Schnittstelle für das kabellose Netzwerk sein, wie es beispielsweise mit dem Kommando ip a oder dem Kommando ifconfig auch zu finden ist.)

[connection]
id=eduroam
uuid=37779d8b-d2f1-479e-a677-f1059ac5006a
type=wifi
interface-name=wlp0s20f3

[wifi]
mode=infrastructure
ssid=eduroam

[wifi-security]
auth-alg=open
key-mgmt=wpa-eap

[802-1x]
anonymous-identity=69873312454253036930@htw-dresden.de
ca-cert=/etc/ssl/certs/ca-bundle.crt
eap=ttls;
identity=s00000@htw-dresden.de
password=**************
phase2-auth=mschapv2

[ipv4]
method=auto

[ipv6]
addr-gen-mode=default
method=auto

[proxy]

 

Siehe auch