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

soa*_*gem 5 debian gpg repository apt raspbian

我正在为一些自定义 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.
Run Code Online (Sandbox Code Playgroud)

但是,这只发生在较新的盒子上。在仍在运行 Jessie 的 Pis 上,我可以运行sudo apt-get update我想要的一切,并且它不会给我任何身份验证警告。

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

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

gf_*_*gf_ 2

根据评论:

SHA1被认为很弱,因此 Debian 早在2016 年 3 月就决定改用更强的哈希算法。

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

请参阅这篇 Debian wiki 文章,了解有关推理的摘要,以及跟踪损坏/修复(上游)存储库的文章。