Chúng tôi muốn sử dụng chữ ký gpg để xác minh một số khía cạnh của các công cụ quản lý cấu hình hệ thống của chúng tôi. Ngoài ra, chúng tôi muốn sử dụng mô hình "tin cậy" trong đó các khóa sysadmin riêng lẻ được ký bằng khóa ký chính và sau đó hệ thống của chúng tôi tin cậy khóa chính đó (và sử dụng "web tin cậy" để xác thực chữ ký của các sysadins của chúng tôi).
Điều này mang lại cho chúng tôi rất nhiều sự linh hoạt, chẳng hạn như khả năng dễ dàng thu hồi niềm tin vào một chìa khóa khi ai đó rời đi, nhưng chúng tôi gặp phải một vấn đề. Mặc dù gpg
lệnh sẽ cho bạn biết nếu một khóa không đáng tin cậy, nhưng nó không xuất hiện để trả về mã thoát cho biết thực tế này. Ví dụ:
# 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
Phần chúng tôi quan tâm là đây:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Mã thoát được trả về bởi gpg trong trường hợp này là 0, mặc dù lỗi tin cậy:
# echo $?
0
Làm thế nào để chúng ta có được gpg thất bại trong trường hợp một cái gì đó được ký với một chữ ký không đáng tin cậy?
Tôi đã thấy một số gợi ý rằng gpgv
lệnh sẽ trả về mã thoát thích hợp, nhưng không may là gpgv
không biết cách tìm nạp khóa từ trình khóa. Tôi đoán chúng ta có thể phân tích cú pháp đầu ra trạng thái (sử dụng --status-fd) từ đó gpg
, nhưng có cách nào tốt hơn không?