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 建議!!