我们想使用gpg签名来验证我们的系统配置管理工具的某些方面。此外,我们希望使用“信任”模型,其中,使用主签名密钥对单个sysadmin密钥进行签名,然后我们的系统信任该主密钥(并使用“信任网络”来验证sysadmin的签名)。
这给了我们很大的灵活性,例如当有人离开时可以轻松地撤消对密钥的信任,但是我们遇到了问题。虽然该gpg
命令将告诉您密钥是否不受信任,但它似乎未返回指示此事实的退出代码。例如:
# gpg -v < foo.asc
Version: GnuPG v1.4.11 (GNU/Linux)
gpg: armor header:
gpg: original file name=''
this is a test
gpg: Signature made Fri 22 Jul 2011 11:34:02 AM EDT using RSA key ID ABCD00B0
gpg: using PGP trust model
gpg: Good signature from "Testing Key <someone@example.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: ABCD 1234 0527 9D0C 3C4A CAFE BABE DEAD BEEF 00B0
gpg: binary signature, digest algorithm SHA1
我们关心的部分是这样的:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
尽管信任失败,在这种情况下gpg返回的退出代码为0:
# echo $?
0
如果使用不可信的签名进行签名,我们如何使gpg失败?
我已经看到一些建议,该gpgv
命令将返回正确的退出代码,但是不幸的gpgv
是,它不知道如何从密钥服务器获取密钥。我猜我们可以解析来自的状态输出(使用--status-fd)gpg
,但是还有更好的方法吗?