Мы хотели бы использовать подписи gpg для проверки некоторых аспектов наших инструментов управления конфигурацией системы. Кроме того, мы хотели бы использовать модель «доверия», в которой отдельные ключи системного администратора подписываются главным ключом подписи, а затем наши системы доверяют этому главному ключу (и используют «сеть доверия» для проверки подписей нашими системными администраторами).
Это дает нам большую гибкость, например, возможность легко отозвать доверие к ключу, когда кто-то уходит, но мы столкнулись с проблемой. Хотя 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
, но есть ли лучший способ?