FedoraでGnuPGを使ったOpenPGPスマートカード#

注釈

以下の手順では、Nitrokey 3 に少なくともファームウェアバージョン``1.4.0`` がインストールされている必要があります。アップデート方法については`ファームウェアアップデート<./firmware-update.html>`__ を参照してください。

GnuPGスマートカード・サポートには、scdaemon が必要です。Fedoraでは、scdaemon はGnuPGパッケージの一部です。

注釈

scdaemon は``/usr/libexec/scdaemon`` にインストールされる。このパスは通常PATH環境変数の一部ではありません。

GnuPGプロジェクトは、OpenPGPスマートカードとのインターフェイスの2つのセットアップをサポートしています。

  1. GnuPG(CCIDドライバ付きscdaemon)→スマートカード(Nitrokeyなど)

    このセットアップでは、scdaemon は、その内部CCIDドライバと*libusb* でNitrokeyと直接通信します。scdaemon は、ログインしているユーザーのパーミッションでユーザー空間で実行されるため、Udevルールを設定する必要があります。

  2. GnuPG (scdaemon with PCSC library) → pcscd → スマートカード (例: Nitrokey)

    このセットアップでは、scdaemon が*pcscd* と通信し、それがNitrokeyと通信する。

GnuPGパッケージのコンフィギュレーションでは、CCIDドライバは無効、pcscサポートは必須と設定されているためです。関連する設定は、仕様ファイル` <https://src.fedoraproject.org/rpms/gnupg2/blob/rawhide/f/gnupg2.spec#_140>` __ と` <https://src.fedoraproject.org/rpms/gnupg2/blob/rawhide/f/gnupg2.spec#_51>` __ にあります。

トラブルシューティング#

最新のFedora 38はインストール後、問題なく動作するはずです。アップグレードされたバージョンのFedoraは、コンフリクトする設定があるかもしれないので、以下のようにチェックする必要がある。Fedora Silverblue は、GnuPG とスマートカードに問題があると報告されています。以下の説明は、Fedora Workstation と*Fedora Server* エディションにのみ適用されます。

gpg --card-status でNitrokeyの情報を照会することで、セットアップの正しい設定を確認することができます。

認知度チェック#

lsusb` コマンドで Nitrokey が認識されていることを確認する。例えば、Bus 001 Device 002:ID 20a0:42b2 Clay Logic Nitrokey 3.

システム構成の確認#

  1. dnf install pcsc-lite``で*pcscd* パッケージがインストールされていることを確認する。さらに、*systemd* サービスとソケットが有効になっていて、``systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket で起動している必要がある。

  2. scdaemon は、pcscd に接続するために*libpcsclite* ライブラリを必要とします。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以降)で有効にすることができる。