Tarjeta inteligente OpenPGP con GnuPG en Fedora#

Nota

Las siguientes instrucciones requieren que el Nitrokey 3 tenga instalada al menos la versión de firmware 1.4.0. Consulte la actualización del firmware para saber cómo actualizarlo.

El soporte de la tarjeta inteligente GnuPG requiere scdaemon. En Fedora el scdaemon es parte del paquete GnuPG.

Nota

El scdaemon ** se instala en /usr/libexec/scdaemon. Esta ruta no suele formar parte de la variable de entorno PATH.

El proyecto GnuPG admite dos configuraciones de interfaz con una tarjeta inteligente OpenPGP.

  1. GnuPG (scdaemon con controlador CCID) → Tarjeta inteligente (por ejemplo, Nitrokey)

    En esta configuración el scdaemon se comunica directamente con el Nitrokey con su driver interno CCID y libusb. Requiere que las reglas Udev estén configuradas, porque el scdaemon se ejecuta en el espacio de usuario con los permisos del usuario conectado.

  2. GnuPG (scdaemon con biblioteca PCSC) → pcscd → Tarjeta inteligente (p. ej. Nitrokey)

    En esta configuración el scdaemon se comunica con pcscd, que a su vez se comunica con la Nitrokey.

En Fedora sólo se admite la segunda configuración, ya que la configuración del paquete GnuPG establece el controlador CCID como deshabilitado y el soporte pcsc como necesario. La configuración relevante se puede encontrar en el archivo spec aquí y aquí.

Solución de problemas#

La última versión de Fedora 38 debería funcionar sin problemas tras la instalación. Las versiones actualizadas de Fedora pueden tener configuraciones conflictivas y deben ser revisadas como se indica a continuación. Se ha reportado que Fedora Silverblue tiene problemas con GnuPG y tarjetas inteligentes. Las instrucciones a continuación sólo aplican a las ediciones Fedora Workstation y Fedora Server.

Se puede comprobar la correcta configuración de una instalación consultando información sobre la Nitrokey con gpg --card-status.

Comprobar el reconocimiento#

Verifique con el comando lsusb que la Nitrokey es reconocida. La salida debería listar la Nitrokey, por ejemplo Bus 001 Device 002: ID 20a0:42b2 Clay Logic Nitrokey 3.

Comprobar la configuración del sistema#

  1. Asegúrese de que el paquete pcscd está instalado con dnf install pcsc-lite. Además, el servicio systemd y el socket deben estar habilitados e iniciados con systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket.

  2. El scdaemon requiere la biblioteca libpcsclite para conectarse a pcscd. La ruta a la biblioteca pcsc puede establecerse explícitamente con echo "pcsc-driver /usr/lib64/libpcsclite.so.1" >> ~/.gnupg/scdaemon.conf. Alternativamente, la biblioteca también puede estar disponible con un enlace simbólico de la siguiente manera ln -s /usr/lib64/libpcsclite.so.1 /usr/lib64/libpcsclite.so. Asegúrese de que el archivo ~/.gnupg/scdaemon.conf no tiene ninguna configuración conflictiva aplicada.

  3. El scdaemon por defecto espera acceso exclusivo a pcscd, para evitar problemas potenciales con modificaciones concurrentes de información en la tarjeta. Esto hace que el acceso falle si otros clientes, normalmente navegadores web, acceden a la tarjeta, aunque sólo sea para leerla. El acceso compartido puede habilitarse con echo "pcsc-shared" >> ~/.gnupg/scdaemon.conf (en GnuPG versión 2.2.28 o superior).