OpenPGP smartcard met GnuPG op Fedora

Notitie

Voor de volgende instructies moet op de Nitrokey 3 ten minste firmwareversie 1.4.0 zijn geïnstalleerd. Raadpleeg firmware-update voor meer informatie over het bijwerken ervan.

De GnuPG smartcard ondersteuning vereist scdaemon. In Fedora is de scdaemon onderdeel van het GnuPG pakket.

Notitie

De scdaemon is geïnstalleerd in /usr/libexec/scdaemon. Dit pad maakt meestal geen deel uit van de PATH omgevingsvariabele.

Het GnuPG project ondersteunt twee manieren om te communiceren met een OpenPGP smartcard.

  1. GnuPG (scdaemon met CCID stuurprogramma) → Smartcard (bijv. Nitrokey)

    In deze opstelling communiceert de scdaemon direct met de Nitrokey met zijn interne CCID driver en libusb. Hiervoor moeten de Udev-regels worden ingesteld, omdat de scdaemon in de gebruikersruimte draait met de rechten van de ingelogde gebruiker.

  2. GnuPG (scdaemon met PCSC-bibliotheek) → pcscd → Smartcard (bijv. Nitrokey)

    In deze opstelling communiceert de scdaemon met pcscd, die vervolgens communiceert met de Nitrokey.

Op Fedora wordt alleen de tweede setup ondersteund, omdat de configuratie van het GnuPG pakket de CCID driver als uitgeschakeld en de pcsc ondersteuning als vereist instelt. De relevante configuratie kan gevonden worden in het spec bestand hier en hier.

Problemen oplossen

De laatste Fedora 38 versie zou na installatie zonder problemen moeten werken. Opgewaardeerde versies van Fedora kunnen conflicterende configuraties hebben en moeten gecontroleerd worden zoals hieronder. Van Fedora Silverblue werd gemeld dat het problemen had met GnuPG en smartcards. De instructies hieronder zijn alleen van toepassing op Fedora Workstation en Fedora Server edities.

De juiste configuratie van een opstelling kan worden gecontroleerd door informatie over de Nitrokey op te vragen met gpg --card-status.

Herkenning controleren

Controleer met het lsusb commando of de Nitrokey wordt herkend. De uitvoer moet de Nitrokey vermelden, bijvoorbeeld Bus 001 Device 002: ID 20a0:42b2 Clay Logic Nitrokey 3.

Systeemconfiguratie controleren

  1. Zorg ervoor dat het pakket pcscd is geïnstalleerd met dnf install pcsc-lite. Verder moeten de systemd service en socket zijn ingeschakeld en gestart met systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket.

  2. De scdaemon heeft de bibliotheek libpcsclite nodig om verbinding te maken met pcscd. Het pad naar de pcsc bibliotheek kan expliciet worden ingesteld met echo "pcsc-driver /usr/lib64/libpcsclite.so.1" >> ~/.gnupg/scdaemon.conf. Als alternatief kan de bibliotheek ook beschikbaar worden gemaakt met een symlink als volgt ln -s /usr/lib64/libpcsclite.so.1 /usr/lib64/libpcsclite.so. Zorg ervoor dat het bestand ~/.gnupg/scdaemon.conf geen conflicterende instellingen heeft.

  3. De scdaemon verwacht standaard exclusieve toegang tot pcscd, om mogelijke problemen met gelijktijdige wijzigingen van informatie op de kaart te voorkomen. Dit zorgt ervoor dat de toegang mislukt als andere clients, meestal webbrowsers, de kaart benaderen, zelfs als het alleen om lezen gaat. Gedeelde toegang kan worden ingeschakeld met echo "pcsc-shared" >> ~/.gnupg/scdaemon.conf (in GnuPG versie 2.2.28 of hoger).