Debian

為什麼我會收到此 APT 警告:Signature by key………使用弱摘要算法(SHA1)?

  • April 29, 2019

我正在為一些自定義 Raspberry Pi 程式碼託管一個私人 Debian 儲存庫。我最初在 Raspbian Jessie(版本 8)上建構了該軟體,生成了一個 GPG 密鑰,用於簽署儲存庫,並sudo apt-key add ...在所有設備上執行,以確保它們能夠驗證我的儲存庫。這工作得很好,直到最近我添加了一些執行 Raspbian Stretch(版本 9)的新設備。即使我向它們添加了完全相同的 GPG 密鑰,以下是我執行時看到的輸出sudo apt-get update

W: GPG error: http://url.of.private.repo stable Release: The following signatures were invalid: 95F9B44CE35F40B759D59C2A77E4184C595493B1
W: The repository 'http://url.of.private.repo stable Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

但是,這只發生在較新的盒子上。在仍在執行 Jessie 的 Pis 上,我可以sudo apt-get update隨心所欲地執行,它不會給我任何身份驗證警告。

為什麼執行 Stretch 的 Pis 認為 GPG 密鑰無效,即使它們都共享相同的密鑰?我可以在執行 Stretch 的盒子上生成一個新密鑰,但我希望避免向每個 Jessie 盒子添加新的 GPG 密鑰。(現在我只有少數幾個新盒子執行 Stretch,而大約 200 個盒子仍在執行 Jessie。)我可以做些什麼來讓 Stretch 盒子相信這個 GPG 密鑰實際上是有效的?

根據要求,以下是sudo apt-get -o Debug::Acquire::gpgv=true update兩個平台上的命令輸出:

根據評論:

SHA1被假定為弱,因此 Debian 決定早在2016 年 3 月就切換到更強大的雜湊算法。

因此,如果操作 APT 儲存庫:棄用SHA1並(至少)切換到SHA256.

請參閱這篇 Debian wiki 文章以獲取有關推理的摘要以及跟踪損壞/修復(上游)儲存庫的這篇文章。

這個關於ask ubuntu的答案為我修復了它:編輯~/gnupg/gpg.conf並添加:

cert-digest-algo SHA256
digest-algo SHA256

引用自:https://serverfault.com/questions/880640