OpenPGP-Smartcard mit GnuPG auf Fedora

Bemerkung

Für die folgenden Anweisungen muss auf dem Nitrokey 3 mindestens die Firmware-Version 1.4.0 installiert sein. Bitte lesen Sie unter firmware update nach, wie Sie die Firmware aktualisieren können.

Die GnuPG Smartcard-Unterstützung erfordert scdaemon. In Fedora ist der scdaemon Teil des GnuPG-Pakets.

Bemerkung

Der scdaemon wird in /usr/libexec/scdaemon installiert. Dieser Pfad ist normalerweise nicht Teil der Umgebungsvariablen PATH.

Das GnuPG-Projekt unterstützt zwei Arten der Verbindung mit einer OpenPGP-Smartcard.

  1. GnuPG (scdaemon mit CCID-Treiber) → Smartcard (z.B. Nitrokey)

    In dieser Konfiguration kommuniziert der scdaemon direkt mit dem Nitrokey über seinen internen CCID-Treiber und libusb. Dazu müssen die Udev-Regeln gesetzt werden, da der scdaemon im Userspace mit den Rechten des angemeldeten Benutzers läuft.

  2. GnuPG (scdaemon mit PCSC-Bibliothek) → pcscd → Smartcard (z. B. Nitrokey)

    In dieser Konfiguration kommuniziert der scdaemon mit pcscd, der wiederum mit dem Nitrokey kommuniziert.

Unter Fedora wird nur die zweite Einstellung unterstützt, da die Konfiguration des GnuPG-Pakets den CCID-Treiber als deaktiviert und die pcsc-Unterstützung als erforderlich einstellt. Die entsprechende Konfiguration ist in der spec-Datei hier und hier zu finden.

Fehlersuche

Die neueste Version von Fedora 38 sollte nach der Installation ohne Probleme funktionieren. Ältere Fedora-Versionen können Konfigurationskonflikte aufweisen und sollten wie unten beschrieben überprüft werden. Es wurde berichtet, dass Fedora Silverblue Probleme mit GnuPG und Smartcards hat. Die folgenden Anweisungen gelten nur für die Editionen Fedora Workstation und Fedora Server.

Die korrekte Konfiguration eines Setups kann durch Abfrage von Informationen über den Nitrokey mit gpg --card-status überprüft werden.

Erkennung prüfen

Überprüfen Sie mit dem Befehl lsusb, ob der Nitrokey erkannt wird. Die Ausgabe sollte den Nitrokey auflisten, z.B. Bus 001 Device 002: ID 20a0:42b2 Clay Logic Nitrokey 3.

Systemkonfiguration prüfen

  1. Stellen Sie sicher, dass das pcscd Paket mit dnf install pcsc-lite installiert ist. Außerdem müssen der systemd Dienst und Socket aktiviert und mit systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket gestartet werden.

  2. Der scdaemon benötigt die libpcsclite Bibliothek, um sich mit pcscd zu verbinden. Der Pfad zur pcsc-Bibliothek kann explizit mit echo "pcsc-driver /usr/lib64/libpcsclite.so.1" >> ~/.gnupg/scdaemon.conf gesetzt werden. Alternativ kann die Bibliothek auch mit einem Symlink wie folgt verfügbar gemacht werden: ln -s /usr/lib64/libpcsclite.so.1 /usr/lib64/libpcsclite.so. Stellen Sie sicher, dass in der Datei ~/.gnupg/scdaemon.conf keine widersprüchlichen Einstellungen vorgenommen wurden.

  3. Der scdaemon erwartet standardmäßig exklusiven Zugriff auf pcscd, um mögliche Probleme mit gleichzeitigen Änderungen von Informationen auf der Karte zu vermeiden. Dies führt dazu, dass der Zugriff fehlschlägt, wenn andere Clients, in der Regel Webbrowser, auf die Karte zugreifen, und sei es nur zum Lesen. Gemeinsamer Zugriff kann mit echo "pcsc-shared" >> ~/.gnupg/scdaemon.conf (in GnuPG Version 2.2.28 oder höher) aktiviert werden.