apt-key已过时。 Debian,Ubuntu,Linux Mint,流行! 如何使用_OS等添加OpenPGP存储库签名密钥。

在本文中,OpenPGP密钥和第三方APT存储库在Debian,Ubuntu和Linux Mint,Pop!中可用。 了解如何安全地添加到基于_OS,Elementary OS等的Linux发行版中,以替换不推荐使用的产品。 apt-key..

尝试使用添加APT存储库密钥时 apt-key 对于基于这些的Debian,Ubuntu和Linux发行版,“警告:不建议使用apt-key。请改为在trust.gpg.d中管理密钥环文件(请参阅apt-key(8))。”显示信息。

该· apt-key 该手册页指出:“不赞成使用apt-key,除了在维护者脚本中使用apt-key del从主密钥环中删除现有密钥之外。”另外,“ apt-key最终将在Debian 11和Ubuntu 22.04上可用。”

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

值得注意的 apt-key 不建议使用的消息说:“而不是管理trust.gpg.d密钥环文件。” Debian维基 如果没有,它指出。这是要添加OpenPGP密钥。 /etc/apt/trusted.gpg/etc/apt/trusted.gpg.d 如上所述,它同样不安全。

apt-key将继续工作,并将暂时继续工作。但是,建议开始过渡使用 signed-by 下面介绍的选项,尤其是在维护第三方存储库的情况下。

1.下载APT存储库密钥

根据Debian Wiki,密钥应通过HTTPS下载,例如,下载到只能由root写入的位置。 /usr/share/keyrings..密钥名称是描述存储库的简称,后跟 archive-keyring..例如,当调用存储库时 myrepository,密钥文件必须命名 myrepository-archive-keyring.gpg..

OpenPGP密钥文件可以使用或不使用ASCII保护。要检查密钥文件是否受ASCII保护,请下载密钥文件并运行以下命令(密钥扩展名可以是.gpg,.asc,.key等。请注意)。

file <repo-key>.gpg

如果此命令的输出如下所示,则密钥为ASCII装甲。

repo-key.gpg: PGP public key block Public-Key (old)

也就是说,这是一种将存储库签名密钥下载并添加到系统的正确且安全的方法。

  • 对于ASCII铠装OpenPGP密钥

要使用wget下载并将此类OpenPGP密钥添加到您的系统,请使用:

wget -O- <https://example.com/key/repo-key.gpg> | gpg --dearmor | sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg

该命令的所有功能/含义:

  • wget 从下载密钥 https://example.com/key/repo-key.gpg 将密钥输出到stdout(-O-)。将此处的URL替换为您要下载并添加到系统中的密钥的URL
  • gpg --dearmorgpg 该命令是OpenPGP加密和签名工具。那 --dearmor 该选项将OpenPGP ASCII Armor的输入解压缩
  • sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg:作为超级用户(sudo),读取标准输入。在这种情况下,它是提供的输出。 gpg --dearmor, 和这个 /usr/share/keyrings/<myrepository>-archive-keyring.gpg 文件。请更换 <myrepository> 您要添加的存储库密钥的描述性名称

例如,要为Signal应用程序添加APT存储库,请使用:

wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg

或者,使用Debian Wiki中作为示例显示的命令(必须以root身份运行,例如在运行之后) sudo -i它正在使用 curl 代替 wget 要下载密钥):

curl <https://example.com/key/repo-key.gpg> | gpg --dearmor > /usr/share/keyrings/<myrepository>-archive-keyring.gpg

使用此命令添加SignalAPT存储库的示例:

curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /usr/share/keyrings/signal-archive-keyring.gpg

  • 对于非ASCII铠装OpenPGP密钥

使用wget下载OpenPGP密钥,并使用以下命令将其添加到系统中:

wget -O- <https://example.com/key/repo-key.gpg> | sudo tee /usr/share/keyrings/<myrepository-archive-keyring.gpg>

或者,使用Debian Wiki中作为示例显示的命令(必须以root身份运行,例如在运行之后) sudo -i):

wget -O /usr/share/keyrings/<myrepository-archive-keyring.gpg> <https://example.com/key/repo-key.gpg>

我没有在此处添加示例,因为找不到使用非ASCII装甲OpenPGP密钥的第三方存储库。

  • 要将OpenPGP密钥直接从密钥服务器导入文件中 /usr/share/keyrings

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/<myrepository>-archive-keyring.gpg --keyserver <hkp://keyserver.ubuntu.com:80> --recv-keys <fingerprint>

代替 hkp://keyserver.ubuntu.com:80,您可以根据需要使用其他密钥服务器。

导入OpenPGP密钥的示例 Linux起义快门PPA/usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg (PPA页面上的指纹为绿色[このPPAに関する技術的な詳細]您可以通过单击链接获得它。这是[このPPAをシステムに追加する]下面):

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CC3D16E460A94EE17FE581CEA8CACC073C3DB2A

您可能还会喜欢:如何防止软件包在Ubuntu,Debian或Linux Mint上更新 [APT]

2.添加一个存储库sources.list条目

您需要添加第三方存储库sources.list条目到 /etc/apt/sources.list.d 目录,不直接 /etc/apt/sources.list 文件。

以前,sources.list文件来自 /etc/apt/sources.list.d 该目录如下所示:

deb https://repository.example.com/debian/ stable main

但是,为了能够使用在步骤1中添加的密钥,需要使sources.list条目如下所示:/etc/apt/sources.list.d/<myrepository.list>):

deb [signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>

这里重要的是如果您还想添加 arch=amd64 有选项 signed-by,您需要用空格分隔两个选项,如下所示:

deb [arch=amd64 signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>

例如,要将信号存储库添加到Debian / Ubuntu系统,请创建一个文件(例如,以root身份使用此文件打开Nano Command Line Text Editor: sudo nano /etc/apt/sources.list.d/signal.listsignal.list/etc/apt/sources.list.d 假设您已经下载了包含以下内容的密钥(如上所述): /usr/share/keyrings/signal-archive-keyring.gpg):

deb [arch=amd64 signed-by=/usr/share/keyrings/signal-archive-keyring.gpg] https://updates.signal.org/desktop/apt xenial main

别忘了做 sudo apt update 添加新的签名密钥和存储库后,更新软件源。

您可以以Deb822文件格式添加存储库,但是这里没有提到,这会使事情变得更加复杂。您可以在Debian Wiki上阅读有关此内容的信息。

您可能还会喜欢:如何找到在Ubuntu,Debian或Linux Mint上提供文件(是否已安装)的软件包

如何删除添加到APT可信密钥环(/etc/apt/trusted.gpg或/etc/apt/trusted.gpg.d)中的现有OpenPGP密钥

如果您如上所述添加OpenGPG密钥,则必须从/etc/apt/trusted.gpg或/etc/apt/trusted.gpg.d中删除相同的密钥(如果之前已添加)。如果您不这样做,将不会有其他安全益处。

从中删除现有的OpenPGP密钥 /etc/apt/trusted.gpg.d 该目录应该非常简单。这是因为密钥文件名必须具有相当的描述性。例如,我系统上该目录中Tor目录的gpg密钥文件名 deb.torproject.org-keyring.gpg

因此,要删除添加到的现有密钥 /etc/apt/trusted.gpg.d,您要做的就是删除密钥文件。这必须以root用户身份完成,因此请使用以下内容以root用户身份打开所选的文件管理器。 admin:// (例如,要以根目录在Nautilus中打开位置,请按。 Ctrl + L 因此,在地址栏中输入它,然后 admin:///etc/apt/trusted.gpg.d),或使用以下命令从命令行中将其删除:

sudo rm /etc/apt/trusted.gpg.d/<myrepository-keyring.gpg>

如果要从中删除密钥,以下步骤也可以使用。 /etc/apt/trusted.gpg.d 目录。

关于删除存储在其中的APTgpg密钥 /etc/apt/trusted.gpg,事情要复杂一些。列出所有使用以下命令导入到两者中的APTOpenPGP密钥 /etc/apt/trusted.gpg/etc/apt/trusted.gpg.d

apt-key list

密钥存储在 /etc/apt/trusted.gpg 然后在顶部列出 /etc/apt/trusted.gpg.d 目录。我需要检查钥匙 uid 查找要删除的密钥。 uid通常显示签署密钥的公司或用户,然后显示电子邮件地址。

来自的关键 /etc/apt/trusted.gpg 列出者 apt-key 这样的列表(示例):

pub   rsa4096 2016-04-22 [SC]

      B9F8 D658 297A F3EF C18D  5CDF A2F6 83C5 2980 AECF

uid           [ unknown] Oracle Corporation (VirtualBox archive signing key) <[email protected]>

sub   rsa4096 2016-04-22 [E]

密钥ID是GPG密钥指纹的后8个字符(因此,在此示例中, 2980AECF)。

删除密钥(从任一 /etc/apt/trusted.gpg 要么 /etc/apt/trusted.gpg.d),您现在可以使用:

sudo apt-key del <KEY-ID>

例如,要从上述示例中删除密钥,请使用:

sudo apt-key del 2980AECF

您可能会喜欢:如何列出Ubuntu,Debian或Linux Mint存储库中的所有软件包 [APT]

参考:

感谢您/ Zeb Nemeth 建议!!

Sidebar