Ми хотіли б використовувати підписи gpg для перевірки деяких аспектів наших інструментів управління конфігурацією системи. Крім того, ми хотіли б використовувати модель "довіри", де окремі ключі 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
, але чи є кращий спосіб?