Nous aimerions utiliser les signatures gpg pour vérifier certains aspects de nos outils de gestion de la configuration du système. De plus, nous aimerions utiliser un modèle de «confiance» dans lequel les clés sysadmin individuelles sont signées avec une clé de signature principale, puis nos systèmes font confiance à cette clé principale (et utilisent le «web de confiance» pour valider les signatures de nos administrateurs système).
Cela nous donne beaucoup de flexibilité, comme la possibilité de révoquer facilement la confiance sur une clé lorsque quelqu'un part, mais nous avons rencontré un problème. Bien que la gpg
commande vous indique si une clé n'est pas approuvée, elle ne semble pas renvoyer un code de sortie indiquant ce fait. Par exemple:
# 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
La partie qui nous tient à cœur est la suivante:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Le code de sortie renvoyé par gpg dans ce cas est 0, malgré l'échec de l'approbation:
# echo $?
0
Comment faire échouer gpg dans le cas où quelque chose est signé avec une signature non fiable?
J'ai vu quelques suggestions selon lesquelles la gpgv
commande renverrait un code de sortie correct, mais gpgv
ne sait malheureusement pas comment récupérer les clés des serveurs de clés. Je suppose que nous pouvons analyser la sortie d'état (en utilisant --status-fd) gpg
, mais y a-t-il une meilleure façon?