存放存储库密钥环的正确位置是什么

存放存储库密钥环的正确位置是什么

如果我谷歌如何安装某些软件,例如 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 装甲的 - 这也是完全留给发行者的选择(我见过装甲和二进制公钥)。

相关内容