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