Dies ist eine alte Version des Dokuments!
Nitrokey Start in der Praxis unter CentOS 7.x
In diesem Kapitel befassen wir uns eingehend mit dem Nitrokey Start (Daten-/Infoblatt) unter CentOS 7.x. Weitere Informationen zum Nitrokey-Stick findet findet man auch hier bzw. im Support Forum.
Mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) können eMails sowie Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den Nitrokey Start welcher hier für einen überschaubaren Betrag von ngerade mal 29€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Besonderheiten bei der Verwendung unter CentOS 7.x ein.
Hardwareinformationen
Informationen über den Stick können wir mit Hilfe des Befehls usb-devices
aus dem RPM-Paket usbutils dem System abverlangen.
# usb-devices
T: Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=20a0 ProdID=4211 Rev=02.00 S: Manufacturer=Nitrokey S: Product=Nitrokey Start S: SerialNumber=FSIJ-1.2.10-43243711 C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 3 Cls=0b(scard) Sub=00 Prot=00 Driver=(none)
Mit Hilfe des Befehls lsusb
aus dem RPM-Paket usbutils können wir auch die Produkt- und Hersteller-Identifikationsnummer des Nitrokey-Sticks ermitteln.
# lsusb Bus 002 Device 003: ID 20a0:4211 Clay Logic
Im Syslog wird uns beim Anstecken des Sticks dies entsprechend protokolliert:
Nov 24 12:03:55 T410 kernel: usb 2-1.2: new full-speed USB device number 3 using ehci-pci Nov 24 12:03:55 T410 kernel: usb 2-1.2: New USB device found, idVendor=20a0, idProduct=4211 Nov 24 12:03:55 T410 kernel: usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Nov 24 12:03:55 T410 kernel: usb 2-1.2: Product: Nitrokey Start Nov 24 12:03:55 T410 kernel: usb 2-1.2: Manufacturer: Nitrokey Nov 24 12:03:55 T410 kernel: usb 2-1.2: SerialNumber: FSIJ-1.2.10-43243711 Nov 24 12:03:55 T410 mtp-probe: checking bus 2, device 3: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2" Nov 24 12:03:55 T410 mtp-probe: bus: 2, device: 3 was not an MTP device Nov 24 12:03:55 T410 systemd: Reached target Smart Card. Nov 24 12:03:55 T410 systemd: Starting Smart Card.
Paketabhängigkeiten
Für den Zugriff auf die SmartCard bzw. auf den Nitrokey Start benötigen wir z.B. für GPG den SmartCard-Daemon scdeamon welcher bei CentOS 7 mit Hilfe es Pakets gnupg2-smime bereitgestellt wird.
Dieses Paket installieren wir nun noch via yum.
# yum install gnupg2-smime -y
Leider ist das Paket an sich aus Sicht der Entwickler des Kryptostick in einer nicht aktuellen Version bei CentOS 7 verfügbar (CentOS 7: 2.0.22 - aktuelle Version: 2.2.11)1). Das hat leider zur Folge, dass wir die PGP-Schlüssel nicht direkt auf der SmartCard generieren können, sondern diesen wie gewohnt auf dem Rechner erzeugen und anschliessend auf den Nitrokey Start Stick verschoben werden muss.
udev-Regeln
Für den Betrieb unter CentOS 7 müssen wir uns noch passende udev-Definitionen hier besorgen und unserer Umgebung anpassen. Dies ist notwendig, da sonst die Gerätedatei nicht mit den entsprechenden Benutzer-Rechten angelegt wird!
Wir wechseln also erst einmal in das entsprechende Konfigurationsverzeichnis /etc/udev/rules.d/
.
# cd /etc/udev/rules.d/
Dann holen wir uns die entsprechende Musterdatei auf unseren Rechner.
# wget https://www.nitrokey.com/sites/default/files/41-nitrokey.rules
Unter CentOS 7 gibt es eine keine standardmässig angelegte Gruppe plugdev, daher werden wir diese erst einmal anlgen.
# groupadd plugdev
Dann setzen wir unseren Benutzer django in diese Gruppe plugdev.
# usermod -aG plugdev django
Nun passen wir noch die eingangs heruntergeladene udev-Regeldatei /etc/udev/rules.d/41-nitrokey.rules an. Der entscheidende Zusatz ist nun hier die Option OWNER=„django“
.
# vim /etc/udev/rules.d/41-nitrokey.rules
- /etc/udev/rules.d/41-nitrokey.rules
# Nitrokey U2F KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", OWNER="django", GROUP="plugdev", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0" # Nitrokey FIDO U2F KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", OWNER="django", GROUP="plugdev", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="4287" SUBSYSTEM!="usb", GOTO="gnupg_rules_end" ACTION!="add", GOTO="gnupg_rules_end" # USB SmartCard Readers ## Crypto Stick 1.2 ATTR{idVendor}=="20a0", ATTR{idProduct}=="4107", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess" ## Nitrokey Pro ATTR{idVendor}=="20a0", ATTR{idProduct}=="4108", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess" ## Nitrokey Storage ATTR{idVendor}=="20a0", ATTR{idProduct}=="4109", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess" ## Nitrokey Start #ATTR{idVendor}=="20a0", ATTR{idProduct}=="4211", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess" ATTR{idVendor}=="20a0", ATTR{idProduct}=="4211", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", OWNER+="django", GROUP+="plugdev", TAG+="uaccess" ## Nitrokey HSM ATTR{idVendor}=="20a0", ATTR{idProduct}=="4230", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess" LABEL="gnupg_rules_end"
Zum Aktivieren unserer geänderten udev-Regeldatei lassen wir diese nun erneut einlesen; hierzu verwenden wir folgenden Befehl:
# udevadm control --reload-rules
Sobald wir nun unseren Nitrokey Pro-Stick in einen USB-Port stecken wird die zugehörige Gerätedate mit den richtigen Berechtigungen angelegt. Hierzu verwenden wir die zum Stick passenden ANgaben, die wir mit lsusb
ermittelt haben.
# lsusb
Bus 002 Device 006: ID 20a0:4211 Clay Logic
# ll /dev/bus/usb/002/032
crw-rw-r--+ 1 django plugdev 189, 133 24. Nov 18:37 /dev/bus/usb/002/006
$ gpg2 --card-status
Application ID ...: D276000124010200FFFE432437110000 Version ..........: 2.0 Manufacturer .....: unmanaged S/N range Serial number ....: 43243711 Name of cardholder: [nicht gesetzt] Language prefs ...: [nicht gesetzt] Sex ..............: unbestimmt URL of public key : [nicht gesetzt] Login data .......: [nicht gesetzt] Signature PIN ....: zwingend Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none]