为什么我会收到这个 APT 警告:密钥签名 [...] 使用弱摘要算法(SHA1)?

为什么我会收到这个 APT 警告:密钥签名 [...] 使用弱摘要算法(SHA1)?

我托管了一个私有 Debian 存储库,用于存放一些自定义 Raspberry Pi 代码。我最初在 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 的 Pi 上,我可以运行sudo apt-get update我想要的所有程序,它不会给我任何身份验证警告。

为什么运行 Stretch 的 Pis 认为 GPG 密钥无效,即使它们都共享同一个密钥?我可以在运行 Stretch 的盒子上生成一个新密钥,但我希望避免向每个 Jessie 盒子添加新的 GPG 密钥。(目前,我只有少数几个新盒子运行 Stretch,而大约 200 个盒子仍在运行 Jessie。)我该怎么做才能让 Stretch 盒子相信这个 GPG 密钥确实有效?

sudo apt-get -o Debug::Acquire::gpgv=true update根据要求,以下是在两个平台上该命令的输出:

答案1

根据评论:

SHA1被认为是弱的,因此 Debian 决定在2016 年 3 月

因此,如果操作 APT 存储库:请弃用SHA1并(至少)切换到SHA256

这篇 Debian 维基文章有关推理的摘要和这个它跟踪损坏/修复的(上游)存储库。

答案2

在 ask ubuntu 上回答为我修复了它:编辑~/gnupg/gpg.conf并添加:

cert-digest-algo SHA256
digest-algo SHA256

相关内容