如何将GPG私钥和公钥导出到文件


20

我通过执行以下命令使用GPG生成了密钥

gpg --gen-key

现在,我需要将密钥对导出到文件中。即分别为private.pgp和的私钥和公钥public.pgp。我该怎么做?

Answers:


31

导出公钥

此命令将导出公钥的ascii防护版本:

gpg --output public.pgp --armor --export username@email

导出密钥

此命令将导出密钥的ascii防护版本:

gpg --output private.pgp --armor --export-secret-key username@email


安全问题,备份和存储

PGP公钥包含有关一个人的电子邮件地址的信息。由于公钥用于加密发送到您地址的电子邮件,因此通常可以接受。但是,在某些情况下,这是不希望的。

对于大多数用例,不需要导出密钥,也不应分发密钥。如果目的是创建备份密钥,则应使用备份选项:

gpg --output backupkeys.pgp --armor --export --export-options export-backup user@email

这将导出所有必要的信息以恢复包括信任数据库信息在内的秘密密钥。确保将所有备份秘密密钥存储在计算平台以外的安全物理位置。

如果此键对您很重要,建议您使用paperkey在纸上打印该键。并将纸钥匙放在防火/防水保险箱中。

公钥服务器

通常,不建议将个人公共密钥发布到密钥服务器上。密钥一旦发布就无法删除,也无法确保服务器上的密钥被假定的所有者所放置。

最好将公用密钥放在您拥有或控制的网站上。有人推荐keybase.io进行分发。但是,该方法跟踪在各种用例中可能不希望的各种社会和技术社区的参与。

对于熟练的技术人员,我个人建议尝试使用Webkey域级别的密钥发现服务。


导出的密钥(第二个命令)是否已加密,或者在将其存储到USB驱动器之前需要自己进行加密吗?
Funkwecker

1
@Julian ...导出的密钥与导出的密钥具有相同的保护。如果有密码短语,则需要密码短语来导入密钥。
RubberStamp

1
我使用上述方法进行了备份,但愚蠢地忘记对其进行测试。除非丢失了某些内容,否则似乎无法从指定的备份方法(--export-options export-backup等)中恢复我的公钥。我是否缺少某些东西,还是误解了备份的类型?
OMGtechy

文档知道--export-secret-keys,但是不知道--export-secret-key
jarno

@OMGtechy您如何尝试恢复密钥的?我可以通过还原公共密钥gpg --import-options restore --import backupkeys.pgp,但如果backupkeys.pgp由创建,则不能还原秘密密钥,而只能还原公共密钥gpg --output backupkeys.pgp --armor --export --export-options export-backup。在那--armor是没有必要的,export-backup可以用代替backup
jarno

3
  • 列出您拥有的密钥: gpg --list-secret-keys
  • 导出密钥: gpg --export-secret-key name > ~/my-key.asc
  • 将其复制到另一台机器上;
  • 导入密钥: gpg --import my-key.asc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.