一千萬個為什麽

搜索

如何避免“gpg --recv-key”帶來的片狀?



如果要使用gpg驗證下載文件的簽名,首先必須導入密鑰。不幸的是,這種操作在實踐中非常緩慢且不穩定。

例如,我在這裏試了一下:

$ gpg --keyserver pgpkeys.mit.edu --recv-key A0E98066
gpg: keyserver receive failed: No data

$ gpg --keyserver pgpkeys.mit.edu --recv-key A0E98066
gpg: key B550E09EA0E98066: public key "Yichun Zhang (agentzh) " imported
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:  14  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 14u
gpg: next trustdb check due at 2019-01-13
gpg: Total number processed: 1
gpg:               imported: 1

第一次運行失敗了。當我重復時,它花了很長時間但最終成功了。特別是,在CI環境中,它打破了很多,這就是我尋找替代品的原因。

題:

  • 如何避免對遠程密鑰服務器的依賴?
  • 是否有一種簡單的方法可以將密鑰導出為文件,稍後使用它在CI環境中導入它而不向密鑰服務器發出請求?

轉載註明原文: 如何避免“gpg --recv-key”帶來的片狀?

一共有 2 個回答:

下載密鑰一次:

gpg --keyserver pgpkeys.mit.edu --recv-key A0E98066
gpg --export A0E98066 > openresty-agentzh-A0E98066.gpg

然後,您可以導入密鑰而無需訪問密鑰服務器:

gpg --import openresty-agentzh-A0E98066.gpg

另一個選擇,如果你信任你的repo或包源是禁用gpg密鑰檢查。如果您通過SSL連接到repo,這尤其可行,因為您可以驗證您是否正在提取正確的源並且沒有MITM攻擊,但是您無法驗證每個包的完整性(在repo被黑客攻擊的情況下)插入的流氓包或包被篡改)。要在repo文件中設置此項:

gpgcheck = 0