使用gpg验证签名信任?

我们想用gpg签名来验证我们的某些方面
系统配置管理工具.另外,我们想
使用“信任”模型,其中各个sysadmin密钥使用a签名
主签名密钥,然后我们的系统信任该主密钥(和
使用“信任网”来验证我们的系统管理员签名.

这给了我们很多灵活性,比如容易的能力
当有人离开时,撤销对密钥的信任,但我们遇到了
问题.虽然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不知道如何从密钥服务器获取密钥.我想我们可以从gpg解析状态输出(使用–status-fd),但是有更好的方法吗?

解决方法

那么让我试着分解这个问题:

第一个问题似乎是您正在测试的密钥是不可信的.

gpg -v < test.txt.asc 
gpg: armor header: Version: GnuPG v1.4.11 (GNU/Linux)
gpg: original file name='test.txt'
this is a test
gpg: Signature made Thu 11 Aug 2011 09:09:35 PM EST using RSA key ID FE1B770E
gpg: using PGP trust model
gpg: Good signature from "John Doe <jdoe@noemail.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: 5DD8 216D ADB1 51E8 4326  3ACA 1DED BB72 FE1B 770E
gpg: binary signature,digest algorithm SHA1

我认为这是故意的…但在我们开始如何解决之前,让我建议你使用gpgv而不是gpg -v?你会在一分钟内找到原因:

$gpgv < test.txt.asc 
gpgv: keyblock resource `/user/.gnupg/trustedkeys.gpg': file open error
gpgv: Signature made Thu 11 Aug 2011 09:09:35 PM EST using RSA key ID FE1B770E
gpgv: Can't check signature: public key not found

$echo $?
2

没有关键,没有信任……不,我们将密钥导入trustedkeys.gpg

$gpg --no-default-keyring --keyring trustedkeys.gpg --import jdoe_pub.gpg
gpg: keyring `/user/.gnupg/trustedkeys.gpg' created
gpg: key FE1B770E: public key "John Doe <jdoe@noemail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
$gpgv < test.txt.asc 
gpgv: Signature made Thu 11 Aug 2011 09:09:35 PM EST using RSA key ID FE1B770E
gpgv: Good signature from "John Doe <jdoe@noemail.com>"

$echo $?
0

希望能帮助到你

相关文章

查找全部容器的日志文件 $ sudo find /var/lib/docker/conta...
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型