Questo articolo spiega come aggiungere in modo sicuro chiavi OpenPGP di terze parti e repository APT su distribuzioni Debian, Ubuntu e Linux basate su di esse come Linux Mint, Pop! _OS, OS elementare, ecc. per sostituire quelli obsoleti apt-key
.
Se provi ad aggiungere una chiave del repository APT con apt-key
sulle distribuzioni Debian, Ubuntu e Linux basate su di esso, vedrai il seguente messaggio:Avviso:apt-key non è aggiornato. Invece, gestisci i file del portachiavi in Trusted.gpg.d (vedi apt-key (8)) “.
il apt-key
la pagina man menziona che "L'uso di apt-key è obsoleto, con l'eccezione dell'utilizzo di apt-key del negli script del manutentore per rimuovere le chiavi esistenti dal keyring principale “. Inoltre,”apt-key sarà disponibile per l'ultima volta in Debian 11 e Ubuntu 22.04 . “
Il motivo di questa modifica è che quando si aggiunge una chiave OpenPGP utilizzata per firmare un repository APT, /etc/apt/trusted.gpg
o /etc/apt/trusted.gpg.d
, la chiave viene utilizzata da APT su tutti gli altri repository configurati sul sistema che non a. si sono fidati incondizionatamente di signed-by
(vedi sotto), anche i repository Debian/Ubuntu ufficiali. Di conseguenza, qualsiasi repository APT non ufficiale a cui è stata aggiunta la sua chiave di firma /etc/apt/trusted.gpg
o /etc/apt/trusted.gpg.d
può sostituire qualsiasi pacchetto sul sistema. Quindi questa modifica è stata apportata per motivi di sicurezza (la tua sicurezza).
Vale anche la pena notare che durante il apt-key
Il messaggio delle impostazioni dice "Invece, gestisci i file del portachiavi in Trusted.gpg.d “, il Debian Wiki dice qualcos'altro. Questo perché l'aggiunta di chiavi OpenPGP a /etc/apt/trusted.gpg
e /etc/apt/trusted.gpg.d
è, come accennato in precedenza, altrettanto pericoloso.
Per ora puoi continuare a utilizzare apt-key poiché funziona ancora. Tuttavia, sarebbe una buona idea iniziare a passare all'utilizzo del signed-by
Opzione come spiegato di seguito, soprattutto se stai mantenendo un repository di terze parti.
Quindi qual è il modo corretto e sicuro per ottenere repository (non ufficiali) di terze parti e le loro chiavi di firma OpenPGP su distribuzioni Debian, Ubuntu e Linux basate su di essi come Linux Mint, Pop! _OS, SO elementare ecc. da chiavi apt obsolete?
1. Scarica la chiave del repository APT
Secondo Debian Wiki, ad esempio, la chiave dovrebbe essere scaricata tramite HTTPS in una posizione che può essere scritta solo dalla radice /usr/share/keyrings
. Il nome della chiave dovrebbe contenere un nome breve che descrive il repository seguito da archive-keyring
. Ad esempio, quando il repository si chiama myrepository
, il file chiave dovrebbe essere denominato myrepository-archive-keyring.gpg
.
Il file della chiave OpenPGP può essere o meno protetto ASCII. Come verificare se un file chiave è corazzato ascii , scarica il file della chiave ed esegui questo comando (Nota che l'estensione della chiave può essere .gpg, .asc, .key e probabilmente altri ):
file <repo-key>.gpg
Se l'output di questo comando è simile al seguente, la chiave è protetta da ASCII:
repo-key.gpg: PGP public key block Public-Key (old)
Tuttavia, ecco come scaricare in modo corretto e sicuro una chiave di firma del repository e aggiungerla al tuo sistema:
- Per chiavi OpenPGP corazzate ASCII
Per scaricare con wget e aggiungere una tale chiave OpenPGP al tuo sistema, usa:
wget -O- <https://example.com/key/repo-key.gpg> | gpg --dearmor | sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg
Cosa significa / significa tutto in questo comando:
-
wget
scarica la chiave dahttps://example.com/key/repo-key.gpg
e dà la chiave a stdout (-O-
). Sostituisci l'URL qui con l'URL della chiave che desideri scaricare e aggiungere al tuo sistema -
gpg --dearmor
:ilgpg
Command è lo strumento di crittografia e firma di OpenPGP; è--dearmor
L'opzione decomprime l'input da un'armatura OpenPGP-ASCII -
sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg
:come superutente (sudo
), leggere lo standard input, in questo caso l'output digpg --dearmor
e scrivilo nel/usr/share/keyrings/<myrepository>-archive-keyring.gpg
File. Sostituisci quel<myrepository>
nome con un nome descrittivo per la chiave del repository che stai aggiungendo
Ad esempio, per aggiungere il repository APT all'applicazione Signal, utilizzare:
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg
Oppure per usare il comando fornito come esempio sul wiki Debian (è necessario eseguirlo come root, ad esempio dopo averlo eseguito sudo -i
; usato curl
Invece di wget
per scaricare la chiave):
curl <https://example.com/key/repo-key.gpg> | gpg --dearmor > /usr/share/keyrings/<myrepository>-archive-keyring.gpg
Esempio di utilizzo di questo comando per aggiungere il repository di Signal APT:
curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /usr/share/keyrings/signal-archive-keyring.gpg
- Per chiavi OpenPGP corazzate non ascii
Scarica la chiave OpenPGP con wget e aggiungila al tuo sistema con:
wget -O- <https://example.com/key/repo-key.gpg> | sudo tee /usr/share/keyrings/<myrepository-archive-keyring.gpg>
Oppure per usare il comando fornito come esempio sul wiki Debian (è necessario eseguirlo come root, ad esempio dopo averlo eseguito sudo -i
):
wget -O /usr/share/keyrings/<myrepository-archive-keyring.gpg> <https://example.com/key/repo-key.gpg>
Non ho aggiunto un esempio qui perché non sono riuscito a trovare un repository di terze parti che utilizza una chiave OpenPGP non protetta da ASCII.
- Come importare le chiavi OpenPGP direttamente da un server delle chiavi in un file in
/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>
Invece di hkp://keyserver.ubuntu.com:80
, se necessario puoi utilizzare un server di chiavi diverso.
Esempio in cui importiamo la chiave OpenPGP del PPA Linux Uprising Shutter in /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg
(Puoi ottenere l'impronta digitale facendo clic sul collegamento verde "Dettagli tecnici su questo PPA" nella pagina PPA - si trova in "Aggiungi questo PPA al tuo sistema"):
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CC3D16E460A94EE17FE581CEA8CACC073C3DB2A
Potrebbe piacerti anche questo:come impedire l'aggiornamento di un pacchetto in Ubuntu, Debian o Linux Mint [APT]
2. Aggiungi la voce source.list per il repository
Le voci del repository di terze parti devono essere aggiunte all'elenco /etc/apt/sources.list.d
Directory e non direttamente nel /etc/apt/sources.list
File.
In precedenza esisteva un file sources.list da /etc/apt/sources.list.d
La directory sarebbe simile a questa:
deb https://repository.example.com/debian/ stable main
Tuttavia, per poter utilizzare la chiave aggiunta nel passaggio 1, la voce sources.list ora deve essere simile a questa (/etc/apt/sources.list.d/<myrepository.list>
):
deb [signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>
È importante notare qui che se stai usando anche il arch=amd64
Opzione insieme a signed-by
, devi separare le due opzioni con uno spazio come segue:
deb [arch=amd64 signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>
Ad esempio, per aggiungere il repository di segnali al tuo sistema Debian / Ubuntu, crea un file (come root; ad esempio, per aprire l'editor di testo della riga di comando Nano con questo file:sudo nano /etc/apt/sources.list.d/signal.list
) denominato signal.list
in /etc/apt/sources.list.d
con il seguente contenuto (a patto che tu abbia già scaricato la chiave come descritto sopra, come /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
Ricordati di eseguire sudo apt update
dopo aver aggiunto una nuova chiave di firma e un nuovo repository per aggiornare le fonti del software.
Puoi anche aggiungere il repository nel formato file Deb822, ma per non complicare ulteriormente le cose, non lo spiegherò qui. Puoi leggerlo sul wiki di Debian.
Potrebbe piacerti anche questo:Come trovare il pacchetto che distribuisce un file (installato o meno) su Ubuntu, Debian o Linux Mint
Come rimuovere una chiave OpenPGP esistente che è stata aggiunta al portachiavi APT attendibile (/etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d)
Quando aggiungi le chiavi OpenGPG come descritto sopra, dovresti rimuovere la stessa chiave da /etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d se l'hai aggiunta in precedenza. Senza questo non ci sono ulteriori vantaggi in termini di sicurezza.
Rimuovi le chiavi OpenPGP esistenti dal /etc/apt/trusted.gpg.d
directory dovrebbe essere abbastanza facile. Questo perché il nome del file chiave dovrebbe essere piuttosto descrittivo. Ad esempio, il nome del file della chiave gpg del repository Tor da questa directory è sul mio sistema deb.torproject.org-keyring.gpg
Per eliminare le chiavi preesistenti che sono state aggiunte /etc/apt/trusted.gpg.d
, devi solo rimuovere i file chiave. Dovrai farlo come root, quindi apri il file manager di tua scelta come root con admin://
(Ad esempio, per aprire una posizione come root in Nautilus, premi Ctrl + L
Quindi puoi digitare e digitare nella barra degli indirizzi admin:///etc/apt/trusted.gpg.d
) o rimuoverlo dalla riga di comando con:
sudo rm /etc/apt/trusted.gpg.d/<myrepository-keyring.gpg>
Le seguenti istruzioni funzionano anche per rimuovere le chiavi dal /etc/apt/trusted.gpg.d
Directory.
Come per Rimozione chiavi APT-GPG memorizzate in /etc/apt/trusted.gpg
, le cose sono un po' più complicate. Usa il comando seguente per elencare tutte le chiavi APT OpenPGP che sono state importate in entrambi i /etc/apt/trusted.gpg
e /etc/apt/trusted.gpg.d
:
apt-key list
Le chiavi memorizzate in /etc/apt/trusted.gpg
dovrebbe essere elencato sopra, seguito dalle chiavi del /etc/apt/trusted.gpg.d
Directory. Devi controllare la chiave uid
per scoprire quale chiave rimuovere. Di solito l'UID dovrebbe mostrare l'azienda o l'utente che ha firmato la chiave seguito dal suo indirizzo email.
Chiave di /etc/apt/trusted.gpg
sono elencati da apt-key
Elenca come segue (esempio):
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]
L'ID chiave è costituito dagli ultimi 8 caratteri dell'impronta digitale della chiave GPG (in questo esempio sono 2980AECF
).
Per eliminare una chiave (da /etc/apt/trusted.gpg
o /etc/apt/trusted.gpg.d
), ora puoi usare:
sudo apt-key del <KEY-ID>
Ad esempio, per eliminare la chiave dall'esempio precedente, utilizzare:
sudo apt-key del 2980AECF
Ti potrebbe piacere questo:come elencare tutti i pacchetti in un repository su Ubuntu, Debian o Linux Mint [APT]
Riferimenti:
- 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
Grazie a te / ZebNemeth per quel suggerimento!