Смарт-карта OpenPGP с GnuPG на Fedora

Примечание

В соответствии с приведенными ниже инструкциями на Nitrokey 3 должна быть установлена микропрограмма версии 1.4.0. Ознакомьтесь с обновлением микропрограммы ` <./firmware-update.html>`__, чтобы узнать, как ее обновить.

Для поддержки смарт-карт GnuPG требуется scdaemon. В Fedora пакет scdaemon входит в состав пакета GnuPG.

Примечание

Демон scdaemon устанавливается по адресу /usr/libexec/scdaemon. Обычно этот путь не входит в переменную окружения PATH.

Проект GnuPG поддерживает два варианта взаимодействия со смарт-картой OpenPGP.

  1. GnuPG (scdaemon с драйвером CCID) → Смарт-карта (например, Nitrokey)

    В этой конфигурации scdaemon взаимодействует непосредственно с Nitrokey с помощью своего внутреннего драйвера CCID и libusb. Это требует установки правил Udev, поскольку scdaemon работает в пользовательском пространстве с правами вошедшего в систему пользователя.

  2. GnuPG (scdaemon с библиотекой PCSC) → pcscd → Smartcard (например, Nitrokey)

    В этой конфигурации scdaemon взаимодействует с pcscd, который затем взаимодействует с Nitrokey.

На Fedora поддерживается только второй вариант, поскольку в конфигурации пакета GnuPG драйвер CCID отключен, а поддержка pcsc необходима. Соответствующую конфигурацию можно найти в файле спецификаций здесь и здесь.

Устранение неполадок

Последняя версия Fedora 38 должна работать после установки без проблем. Обновленные версии Fedora могут иметь конфликтующие конфигурации, и их следует проверить, как описано ниже. Сообщалось, что Fedora Silverblue имеет проблемы с GnuPG и смарт-картами. Приведенные ниже инструкции относятся только к редакциям Fedora Workstation и Fedora Server.

Правильность конфигурации установки можно проверить, запросив информацию о Nitrokey с помощью gpg --card-status.

Проверка распознавания

Убедитесь с помощью команды lsusb, что Nitrokey распознан. На выходе должен появиться список Nitrokey, например, Bus 001 Device 002: ID 20a0:42b2 Clay Logic Nitrokey 3.

Проверка конфигурации системы

  1. Убедитесь, что пакет pcscd установлен с помощью dnf install pcsc-lite. Далее необходимо включить и запустить службу и сокет systemd с помощью systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket.

  2. Демон scdaemon требует библиотеку libpcsclite для подключения к pcscd. Путь к библиотеке pcsc может быть задан явно с помощью echo "pcsc-driver /usr/lib64/libpcsclite.so.1" >> ~/.gnupg/scdaemon.conf. Кроме того, библиотека может быть доступна с помощью симлинка следующим образом ln -s /usr/lib64/libpcsclite.so.1 /usr/lib64/libpcsclite.so. Убедитесь, что в файле ~/.gnupg/scdaemon.conf не применены конфликтующие настройки.

  3. Демон scdaemon по умолчанию ожидает эксклюзивного доступа к pcscd, чтобы избежать потенциальных проблем с одновременным изменением информации на карте. Это приводит к сбою доступа, если другие клиенты, обычно веб-браузеры, обращаются к карте, даже если только для чтения. Общий доступ может быть включен с помощью echo "pcsc-shared" >> ~/.gnupg/scdaemon.conf (в GnuPG версии 2.2.28 или выше).