【问题标题】:Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead警告: apt-key 已弃用。改为在trusted.gpg.d 中管理密钥环文件
【发布时间】:2021-08-31 04:14:52
【问题描述】:

我在this guide 之后安装了elasticsearch,但elasticsearch 并不是这个问题的一部分。

第一步,我需要添加密钥:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

并收到以下消息:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

安装过程很好,但由于它已被弃用,我正在寻找替代 apt-key 的新用法。 (我安装包没问题。)来自man apt-key我看到了

apt-key(8) 将最后在 Debian 11 和 Ubuntu 22.04 中可用。

...

旨在与任何 apt 版本一起使用的二进制密钥环文件应该 因此始终使用 gpg --export 创建。

但它没有说apt-key add 的替代方案。我试过了

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --export

但是没有用。那么当apt-key 被移除时,wget 的管道之后我用什么?

【问题讨论】:

标签: linux apt apt-key


【解决方案1】:

在这里找到答案: https://suay.site/?p=526

简而言之:

检索密钥并添加密钥:

curl -s URL | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/NAME.gpg --import

授权用户_apt:

sudo chown _apt /etc/apt/trusted.gpg.d/NAME.gpg

【讨论】:

  • 或者,参考文章建议将文件权限从 600 更新到 644,而不是 chown-ing,只是使文件对所有人都可读,因为它无论如何都是公钥:sudo chmod 644 /etc/apt/trusted.gpg.d/NAME.gpg
  • 您可以通过curl -s URL | sudo gpg ... 避免保存其他文件。此外,您可以通过参数化NAME 使脚本可复制粘贴。
  • 这是不安全的:密钥将被所有存储库信任,甚至是您的发行版自己的存储库。这正是必须弃用 apt-key 的原因。 I have explained the method recommended by Debian and used by Signal in my answer.
【解决方案2】:

/etc/apt/trusted.gpg.d 添加密钥是不安全,因为它会为所有存储库添加密钥。 这正是 apt-key 必须被弃用的原因。

短版

Signal 所做的事情。 如果您想使用https://example.com/EXAMPLE.gpg 处的密钥作为/etc/apt/sources.list.d/EXAMPLE.list 中列出的存储库,请使用:

wget -O- https://example.com/EXAMPLE.gpg |\
    gpg --dearmor > /usr/share/keyrings/EXAMPLE.gpg

echo "deb [signed-by=/usr/share/keyrings/EXAMPLE.gpg] https://example.com/apt stable main" |\
    sudo tee /etc/apt/sources.list.d/EXAMPLE.list

# Optional (you can find the email address / ID using `apt-key list`)
sudo apt-key del support@example.com

加长版

虽然弃用通知建议将密钥添加到 /etc/apt/trusted.gpg.d,但这是一个不安全的解决方案。引用this article from Linux Uprising

此更改的原因是,当将用于签署 APT 存储库的 OpenPGP 密钥添加到 /etc/apt/trusted.gpg/etc/apt/trusted.gpg.d 时,APT 在系统上配置的所有其他存储库上无条件信任该密钥有一个signed-by(见下文)选项,甚至是官方的 Debian / Ubuntu 存储库。因此,任何将其签名密钥添加到 /etc/apt/trusted.gpg/etc/apt/trusted.gpg.d 的非官方 APT 存储库都可以替换系统上的任何包。因此,出于安全原因(您的安全)进行此更改。

that Linux Uprising articleDebian Wiki中解释了正确的解决方案:将密钥存储在/usr/share/keyrings/中,然后在apt源列表中引用密钥。

因此,适当的方法如下:

  1. https://example.com/EXAMPLE.gpg 下载密钥并将其存储在/usr/share/keyrings/EXAMPLE.gpg 中。 Debian wiki 解释说,您应该删除密钥(即将其从 base64 转换为二进制)以与旧软件兼容。
    wget -O- https://example.com/EXAMPLE.gpg |\
        gpg --dearmor > /usr/share/keyrings/EXAMPLE.gpg
    
  2. 将密钥添加到存储库使用的源文件。 在/etc/apt/sources.list.d/ 中找到适当的文件并对其进行编辑,使其链接到您刚刚添加的密钥环。 如果该文件不存在,您可以制作一个。 最后,它应该看起来像这样:
    deb [signed-by=/usr/share/keyrings/EXAMPLE.gpg] https://example.com/apt stable main
    
  3. apt-key 中删除密钥(如果之前已添加)。 运行sudo apt-key list 列出所有键,并找到之前添加的键。 使用密钥的电子邮件地址或指纹,运行sudo apt-key del support@example.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2015-03-23
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多