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.d
APT在系统上配置的所有其他存储库中无条件信任该密钥。 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替换为您要下载并添加到系统中的密钥的URLgpg --dearmor
:gpg
该命令是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.list
) signal.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]
参考:
- https://wiki.debian.org/DebianRepository/UseThirdParty
- https://askubuntu.com/a/1307181/1149075
- https://zebnemeth.wordpress.com/2021/01/15/install-signal-desktop-using-gpg/
- https://github.com/docker/docker.github.io/issues/11625
感谢您/ Zeb Nemeth 建议!!