我最近买了一个Yubikey Neo,它可以作为 OpenPGP 智能卡。我想用它来存储我的私人 GnuPG 密钥。我已经完成了初始设置,并且能够使用智能卡对文件进行签名和加密。设置完成后,智能卡的密钥会显示在gpg --list-secret-keys
输出中。
如果我丢失了 GPG 密钥环(比如我的硬盘驱动器死了)或者我想在多台机器上使用它,我如何让 GPG 使用智能卡?
我最近买了一个Yubikey Neo,它可以作为 OpenPGP 智能卡。我想用它来存储我的私人 GnuPG 密钥。我已经完成了初始设置,并且能够使用智能卡对文件进行签名和加密。设置完成后,智能卡的密钥会显示在gpg --list-secret-keys
输出中。
如果我丢失了 GPG 密钥环(比如我的硬盘驱动器死了)或者我想在多台机器上使用它,我如何让 GPG 使用智能卡?
你需要运行:
gpg --card-status
gpg 会为你做这件事:
/tmp$ mkdir gpgtmp
/tmp$ chmod go-rwx gpgtmp
/tmp$ GNUPGHOME=/tmp/gpgtmp gpg --keyserver pgp.mit.edu --recv F8713BDF
gpg: sleutelring ‘/tmp/gpgtmp/secring.gpg’ is aangemaakt
gpg: sleutelring ‘/tmp/gpgtmp/pubring.gpg’ is aangemaakt
gpg: opvragen sleutel F8713BDF van hkp sleutelserver pgp.mit.edu
WARNING: gnome-keyring:: couldn't connect to: /run/user/robin/keyring-55e9Rg/pkcs11: No such file or directory
gpg: /tmp/gpgtmp/trustdb.gpg: trustdb created
gpg: sleutel F8713BDF: publieke sleutel “Robin Sheat <robin@kallisti.net.nz>” geimporteerd
gpg: no ultimately trusted keys found
gpg: Totaal aantal verwerkt: 1
gpg: Geimporteerd: 1 (RSA: 1)
/tmp$ GNUPGHOME=/tmp/gpgtmp gpg --list-secret
*nothing here*
/tmp$ GNUPGHOME=/tmp/gpgtmp gpg --card-status
*snip boring card info*
General key info..: pub 2048R/F8713BDF 2013-09-24 Robin Sheat <robin@kallisti.net.nz>
sec> 2048R/F8713BDF aangemaakt: 2013-09-24 vervaldatum: nooit
*etc*
/tmp$ GNUPGHOME=/tmp/gpgtmp gpg --list-secret
/tmp/gpgtmp/secring.gpg
-----------------------
sec> 2048R/F8713BDF 2013-09-24
Serienummer van de kaart = ....
uid Robin Sheat <robin@kallisti.net.nz>
*etc*
当您开始全新安装时,您有两个选择:
插入智能卡(Yubikey)并运行
gpg --card-edit
fetch
quit
然后,gpg
使用--card-status
为密钥创建存根的选项运行:
gpg --card-status
从密钥服务器导入您的公钥(上面的 fetch 命令自动执行相同操作),然后
gpg --card-status
这些方法仅在导入公钥的方式上有所不同,即自动或手动。
当您在智能卡上设置密钥对时,加密、解密和签名操作所需的所有数据都存储在卡上。因此,即使丢失了您的密钥环,您也只需将智能卡放在手边即可执行这些操作。
不过,我建议您不要简单地相信我的话,而是自己进行实验。重新配置 GPG 以查看一个空的密钥环目录并尝试使用智能卡解密您的重要文件。您可能需要先将卡中的证书导入您的密钥环,这些步骤取决于您使用的密钥管理器。
@Askford - 我假设您在 3 年后设法解决了这个问题?
对于其他有类似问题的人来说,对我有用的是:
gpg2 --import public_key.key
这将我所有的密钥从全新安装中带回来,只有 yubikey
这个命令给了我:
gpg2 --import key.asc
gpg: key 0AAD23DD518496D1: public key "Lee Fenlan <lee@fenlan.uk>" imported
gpg: Total number processed: 1
gpg: imported: 1
然后gpg2 -k
给了我:
---------------------------------
pub rsa4096 2016-08-09 [SC]
7F5F963D411B8E2FC7BB33150AAD23DD518496D1
uid [ unknown] Lee Fenlan <lee@fenlan.uk>
sub rsa4096 2016-08-09 [S]
sub rsa4096 2016-08-09 [E]
sub rsa4096 2016-08-09 [A]
现在,如果我尝试加密/解密/签名或 ssh 到任何需要我的私钥的东西,它都会按预期工作。