เราต้องการใช้ลายเซ็น gpg เพื่อตรวจสอบบางแง่มุมของเครื่องมือการจัดการการกำหนดค่าระบบของเรา นอกจากนี้เราต้องการใช้รูปแบบ "ความไว้วางใจ" ที่คีย์ดูแลระบบแต่ละคีย์ถูกเซ็นชื่อด้วยคีย์การเซ็นชื่อหลักจากนั้นระบบของเราจะเชื่อถือคีย์หลักนั้น (และใช้ "เว็บที่ไว้วางใจ" เพื่อตรวจสอบลายเซ็นโดย sysadmins ของเรา)
สิ่งนี้ทำให้เรามีความยืดหยุ่นมากเช่นความสามารถในการเพิกถอนความไว้วางใจในคีย์เมื่อมีคนออกไปได้อย่างง่ายดาย แต่เราพบปัญหา ในขณะที่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
ไม่รู้วิธีดึงข้อมูลคีย์จาก keyservers ฉันเดาว่าเราสามารถแยกวิเคราะห์สถานะเอาต์พุต (โดยใช้ --status-fd) จากgpg
แต่มีวิธีที่ดีกว่านี้หรือไม่