自动下载一个pgp密钥

download a pgp key automaticly

我想像这样使用 gpg 从密钥服务器自动下载 pgp 密钥:

    gpg --searchkey carol@example.com

gpg 给我这个结果。

    gpg: searching for "carol@example.com" from hkp server pool.sks-keyservers.net
    (1)     <carol@example.com>
              2048 bit RSA key 2F5E71CD, created: 2015-02-17
    Keys 1-1 of 1 for "carol@example.com".  Enter number(s), N)ext, or Q)uit > 

如果我想将此密钥添加到我的密钥环中,我需要按“1”和 ENTER。

我的问题是:有没有办法总是自动插入从密钥服务器找到的第一个密钥到我的密钥环?因为如果我想用大约 200 个地址来完成它,那么如果我可以通过脚本导入它们而无需坐在计算机旁边并始终按“1”和 Enter。

我知道总是自动导入第一个密钥存在安全风险,但自动导入密钥并不意味着我也自动信任它们。

编写脚本时不要使用邮件地址来查找密钥。 Everybody can upload keys with arbitrary user IDs in them, key servers to not check anything at all. It is even easily possible to calculate short key ID collisions。信任密钥服务器上的任意密钥提供了一个非常非常危险的错误安全假设。

出于脚本目的,请始终使用密钥指纹。它们可以防止碰撞攻击并为 OpenPGP 密钥提供唯一标识符(理论上,它们不会,但它们提供比 UUID 更大的密钥地址 space,在实践中被认为是唯一的)。

要下载指纹列表,请使用

gpg --recv-keys \
  0D69E11F12BDBA077B3726AB4E1F799AA4FF2279 \
  4AC1999F0BA293E8960AF2DA428C3085AF19CFE9 \
  ...

(或者,删除反斜杠并将所有内容放在一行中)

简单地获取所有密钥以另一种方式验证信任(例如通过信任网络,但不要忘记为此),您必须围绕 GnuPG 编写脚本。这是一个 example script originally posted on security.SE,它获取一个每行包含一个邮件地址的文件并获取所有匹配的键:

#!/bin/sh
while read line
do
    gpg --with-colons --batch --search $line 2>/dev/null | \
    awk 'BEGIN { FS = ":" };  =="pub" { print  }' | \
    xargs gpg --recv-keys
done <