![为什么我会收到这个 APT 警告:密钥签名 [...] 使用弱摘要算法(SHA1)?](https://linux22.com/image/712574/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%BC%9A%E6%94%B6%E5%88%B0%E8%BF%99%E4%B8%AA%20APT%20%E8%AD%A6%E5%91%8A%EF%BC%9A%E5%AF%86%E9%92%A5%E7%AD%BE%E5%90%8D%20%5B...%5D%20%E4%BD%BF%E7%94%A8%E5%BC%B1%E6%91%98%E8%A6%81%E7%AE%97%E6%B3%95%EF%BC%88SHA1%EF%BC%89%EF%BC%9F.png)
我托管了一个私有 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