如果我谷歌如何安装某些软件,例如 wine,我会看到以下保存公钥的说明/usr/share/密钥环/然后添加一个存储库。但是如果我打开存储库源文件,就会看到对公钥 Signed-By 的另一个位置的引用:/etc/apt/keyrings。
例如这里 https://www.tecmint.com/install-wine-in-ubuntu/ 首先你需要下载一个公钥并将其放在 /usr/share/keyrings
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
然后公钥在另一个位置 /etc/apt/keyrings 中被引用
sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
在 winehq-jammy.sources 中
Signed-By: /etc/apt/keyrings/winehq-archive.key
为什么会这样?它是如何运作的?
为什么公钥没有被解密?
gpg --dearmor
答案1
不同的指南指向不同的位置。这是因为两个位置都可以,实际上由您决定将它们放在哪里。
但似乎该指南是错误的,因为它说您应该将密钥环放入/usr/share/keyrings/
,但随后又指向/etc/apt/keyrings/
源文件中的 。您应该选择其中一个 - 混合两者肯定是错误的。(您也许可以写信给 TecMint 并指出其文章中的错误。)
这手册页sources.list
(调用man sources.list
)实际上在以下部分中提到了这些位置:
DEB 和 DEB-SRC 类型:选项
- 署名 (署名)是要求存储库通过的选项apt-secure(8) 使用一组特定的密钥而不是 apt 配置的所有受信任密钥进行验证。它被指定为密钥环文件的绝对路径列表(必须可供 _apt 系统用户访问和读取,因此请确保每个人都对文件具有读取权限)和要从这些密钥环中选择的密钥指纹。密钥环的推荐位置是
/usr/share/keyrings
软件包管理的密钥环和/etc/apt/keyrings
系统操作员管理的密钥环。如果未指定密钥环文件,则默认为 trust.gpg 密钥环和 trust.gpg.d/ 目录中的所有密钥环 (...)
然而,对于“由包管理”和“由系统操作员管理”对我来说,这表明没有明确的正确的或者错误的这里(因为它只是一个推荐),只不过您放置密钥的位置和在源文件中引用它们的位置应该一致。
但是,我认为将apt
密钥环放在/etc/apt/
文件夹下是合乎逻辑的,而应用程序其他用途的密钥环可以放在 下/usr/share/keyrings
。此外,apt
还有一个名为 的文件夹/etc/apt/trusted.gpg.d/
,其中存储了 Ubuntu 的受信任密钥环(手册页中也提到了这一点)。
还,阅读此处关于为什么 GPG 密钥是 Ascii 装甲的 - 这也是完全留给发行者的选择(我见过装甲和二进制公钥)。