如何知道存储库是用哪个密钥签名的(反之亦然)?

如何知道存储库是用哪个密钥签名的(反之亦然)?

我想signed-by在 /etc/apt/sources.list.d/debian.sources 的所有存储库上使用该选项,指向 /usr/share/keyrings 而不是 /etc/apt/trusted.gpg.d 中的密钥在禁用此目录之前,据我了解,这种旧的做法是不安全的。我不知道这是否只适用于第三方存储库,但安全总比后悔好。

但是,在添加signed-by选项时,我发现自己无法知道哪个密钥链接到哪个存储库,因为该密钥的名称与存储库不匹配:

debian-archive-bullseye-automatic.gpg
debian-archive-bullseye-security-automatic.gpg
debian-archive-bullseye-stable.gpg
debian-archive-buster-automatic.gpg
debian-archive-buster-security-automatic.gpg
debian -archive-buster-stable.gpg
debian-archive-keyring.gpg
debian-archive-removed-keys.gpg
debian-archive-stretch-automatic.gpg
debian-archive-stretch-security-automatic.gpg
debian-archive-stretch-稳定的gpg

我的 /etc/apt/sources.list.d/debian.sources 看起来像这样:

类型:deb
URI:https://deb.debian.org/debian/
套件:buster
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-stable.gpg

类型:deb-src
URI:https://deb.debian.org/debian/
套件:buster
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-stable.gpg

类型:deb
URI:https://security.debian.org/debian-security
套件:buster/updates
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-security-automatic.gpg

类型:deb-src
URI:https://security.debian.org/debian-security
套件:buster/updates
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-security-automatic.gpg

类型:deb
URI:https://deb.debian.org/debian/
套件:buster-updates
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-automatic.gpg

类型:deb-src
URI:https://deb.debian.org/debian/
套件:buster-updates
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-automatic.gpg

类型:deb
URI:https://deb.debian.org/debian
套件:buster-backports
组件:main
签名者:/usr/share/keyrings/debian-archive-buster-automatic.gpg

这不会给我带来任何错误apt update,而且我可以安装软件,但我想知道一种方法来确定我应该将哪个键附加到signed-by每个存储库的选项中,而不必进行猜测,并且留下疑问。

我知道,apt-key list但信息几乎相同,“Debian 安全存档自动签名密钥”应该如何告诉我们它签署了破坏更新和破坏向后移植?一把钥匙可以签多个套件正常吗?我本来希望每间套房都有一把钥匙。

另外,相反:我如何知道关键标志是什么?我如何知道 /usr/share/keyrings 中没有无用的密钥或者它们正在签署恶意存储库?

答案1

对于上下文,记录了第三方存储库的当前最佳实践在 Debian wiki 页面中有关第三方存储库使用的信息并在这篇“如何通过 apt 正确使用第 3 方 Debian 存储库签名密钥”博客文章。最终它们应该扩展到 Debian 自己的存储库,请参阅这个问题例如。

假设您信任当前的设置,您可以通过列出用于签名的密钥来将签名的存档版本文件映射到密钥;例如:

$ gpgv /var/lib/apt/lists/security.debian.org_dists_buster_updates_InRelease
gpgv: Signature made Mon 07 Jun 2021 23:03:07 CEST
gpgv:                using RSA key 379483D8B60160B155B372DDAA8E81B4331F7F50
gpgv: Can't check signature: No public key
gpgv: Signature made Mon 07 Jun 2021 23:03:07 CEST
gpgv:                using RSA key 5237CEEEF212F3D51C74ABE0112695A0E562B32A
gpgv: Can't check signature: No public key

显示 Debian 10 安全更新由 RSA 密钥 379483D8B60160B155B372DDAA8E81B4331F7F50 和 5237CEEEF212F3D51C74ABE0112695A0E562B32A 签名。它们分别是“Debian 安全档案自动签名密钥(9/stretch)”和“Debian 安全档案自动签名密钥(10/buster)”。确定/usr/share/keyrings,使用诸如 之类的命令查看其中的各个密钥环for file in /usr/share/keyrings/*.gpg; do echo $file; gpg --list-keys --no-default-keyring --with-subkey-fingerprint --keyring $file; done

这并不理想;如需更权威的使用信息,您可以应用以下规则:

  • “稳定”键(例如“Debian Stable Release Key (10/buster)”)与相应的稳定存储库一起使用;
  • 自动密钥的使用方式如其公告电子邮件中所述,例如 巴斯特钥匙靶心键

存储库索引通常由两个密钥签名,以允许一些重叠。

你不应该关心个人文件/usr/share/keyrings,而是关于在那里提供文件的包(当然,还有包未提供的文件)。但是,上述地图也可以查找您的设置中不再使用的键。

从 APT 2.4 开始,将可以.sources在片段中指定签名密钥,例如

URIs: https://deb.debian.org
Suites: stable
Components: main contrib non-free
Signed-By:
 -----BEGIN PGP PUBLIC KEY BLOCK-----
...
 -----END PGP PUBLIC KEY BLOCK-----

相关内容