gpg --recv-keys
有效,但 auto-key-retrieve
無效
我正在嘗試驗證文件
https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-108.4.453.tar.gz
使用此處提供的簽名:
https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-108.4.453.tar.gz.asc
我正在使用以下命令:
gpg --verify dropbox-lnx.x86_64-108.4.453.tar.gz.asc
這導致以下輸出:
gpg: assuming signed data in 'dropbox-lnx.x86_64-108.4.453.tar.gz' gpg: Signature made Tue 20 Oct 2020 10:53:17 PM CEST gpg: using RSA key FC918B335044912E gpg: Can't check signature: No public key
我的 GPG 配置
~/.gnupg/gpg.conf
如下所示:keyserver keyserver.ubuntu.com auto-key-retrieve
強調
auto-key-retrieve
. 此設置有效,如下所示:我之前成功驗證了文件,即使我沒有有問題的公鑰;它在驗證過程中按預期檢索。
gpg --search-keys FC918B335044912E
還表明可以在我正在使用的密鑰伺服器上找到密鑰。我也gpg --recv-keys
可以,之後驗證顯然有效。我的問題,這可能源於對操作的誤解
gpg
:為什麼我可以手動獲取有問題的密鑰,但不能自動使用auto-key-retrieve
,即使我知道它可以與其他密鑰一起使用?
在對此進行了更深入的研究之後,我想我現在至少可以自己部分回答這個問題。當然,仍然歡迎任何補充資訊。:)
原因可能是給定簽名不包含密鑰的指紋,而僅包含密鑰 ID。例如,您可以使用
gpg --list-packets
. 對於有問題的簽名,您會得到:signature packet: algo 1, keyid FC918B335044912E version 4, created 1603227197, md5len 0, sigclass 0x00 digest algo 8, begin of digest fd b9 hashed subpkt 2 len 4 (sig created 2020-10-20) subpkt 16 len 8 (issuer key ID FC918B335044912E) data: [2046 bits]
對於另一個
auto-key-retrieve
有效的簽名,它看起來像這樣::signature packet: algo 1, keyid BCAA30EA9C0D5763 version 4, created 1543944543, md5len 0, sigclass 0x00 digest algo 10, begin of digest 84 51 hashed subpkt 33 len 21 (issuer fpr v4 1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763) hashed subpkt 2 len 4 (sig created 2018-12-04) subpkt 16 len 8 (issuer key ID BCAA30EA9C0D5763) data: [2046 bits]
強調線
hashed subpkt 33 len 21 (issuer fpr v4 1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763)
man gpg
在關於 的部分中明確指出auto-key-retrieve
:嘗試查找密鑰的方法順序是:
$$ … $$ 5. 如果配置了任何密鑰伺服器並且頒發者指紋是簽名的一部分(自 GnuPG 2.1.16 起),則嘗試配置的密鑰伺服器。
(強調我的。)
--recv-keys
另一方面,也確實通過密鑰 ID 進行查找。旁注:沒有指紋的 Dropbox 鍵很奇怪。在 2019 年 7 月 5 日的此送出中給出的刪除密鑰 ID 查找的部分原因是,即使在那時,指紋顯然也很長時間預設包含在簽名中。Dropbox 簽名是從 2020-10-20 開始的。一起行動吧,Dropbox!xP