Pourquoi GnuPG 2 et gpg-connect-agent échouent avec «ERR 67108983 Pas de démon SmartCard»?

10

En utilisant Debian Jessie et GnuPG 2, chaque fois que j'essaie d'utiliser GnuPG 2 ( gpg2) ou gpg-connect-agentavec une carte à puce OpenPGP (dans mon cas une YubiKey), l'opération échoue avec un message

$ gpg-connect-agent --hex "scd apdu 00 f1 00 00" /bye
ERR 67108983 No SmartCard daemon <GPG Agent>
$ gpg2 --card-status
ERR 67108983 No SmartCard daemon <GPG Agent>

Lorsque vous utilisez l'héritage GnuPG 1 ( gpg), tout fonctionne bien.

Qu'est-ce qui ne va pas ici?

Jens Erat
la source

Réponses:

15

scdaemon est manquant

GnuPG 2 se connecte à la carte gpg-agent, ce qui n'inclut pas à nouveau les capacités de la carte à puce, mais y accède via une autre application. Cela peut être configuré et a une valeur par défaut dépendante du système, à partir de man gpg-agent:

--scdaemon-program filename
      Use program filename as the Smartcard daemon.  The default is
      installation dependent and can be shown with the gpgconf command.

Cela révèle que GnuPG essaie de s'exécuter /usr/lib/gnupg2/scdaemon:

$ gpgconf
gpg:GPG für OpenPGP:/usr/bin/gpg2
gpg-agent:GPG Agent:/usr/bin/gpg-agent
scdaemon:Smartcard Daemon:/usr/lib/gnupg2/scdaemon
[snip]

Mais ce n'est pas disponible:

$ /usr/lib/gnupg2/scdaemon
bash: /usr/lib/gnupg2/scdaemon2: No such file or directory

L'installation scdaemon

Une requête rapide à travers apt-cacherévèle que Debian a tiré le scdaemon hors du gnupg2paquet, probablement parce qu'il introduit un tas de nouvelles dépendances GnuPG autrement pas:

Package: scdaemon
Source: gnupg2
Version: 2.1.10-3
Installed-Size: 538
Maintainer: Debian GnuPG Maintainers <[email protected]>
Architecture: amd64
Replaces: gpgsm (<< 2.0.18-2)
Depends: gnupg-agent (= 2.1.10-3), libassuan0 (>= 2.2.0), libc6 (>= 2.15),
  libgcrypt20 (>= 1.6.1), libgpg-error0 (>= 1.14), libksba8 (>= 1.2.0),
  libnpth0 (>= 0.90), libusb-0.1-4 (>= 2:0.1.12)
Breaks: gpgsm (<< 2.0.18-2)
Description-en: GNU privacy guard - smart card support
 GnuPG is GNU's tool for secure communication and data storage.
 It can be used to encrypt data and to create digital signatures.
 It includes an advanced key management facility and is compliant
 with the proposed OpenPGP Internet standard as described in RFC4880.
 .
 This package contains the smart card program scdaemon, which is used
 by gnupg-agent to access OpenPGP smart cards.

L'installer avec sudo apt-get install scdaemonrésout le problème.

Jens Erat
la source