Questo articolo spiega come aggiungere in modo sicuro chiavi OpenPGP e repository APT di terze parti su distribuzioni Debian, Ubuntu e Linux basate su questi, come Linux Mint, Pop! _OS, OS elementare e così via, per sostituire il deprecato apt-key
.
Quando si tenta di aggiungere una chiave di repository APT utilizzando apt-key
sulle distribuzioni Debian, Ubuntu e Linux basate su queste, vedrai il seguente messaggio: “Attenzione: apt-key è deprecato. Gestisci invece i file di portachiavi in trusted.gpg.d (vedi apt-key (8))“.
Il apt-key
la pagina man menziona che il “l’uso di apt-key è deprecato, ad eccezione dell’uso di apt-key del negli script del manutentore per rimuovere le chiavi esistenti dal portachiavi principale“. Cosa c’è di più, “apt-key sarà disponibile per l’ultima volta in Debian 11 e Ubuntu 22.04.“
La ragione 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 è considerata attendibile incondizionatamente da APT su tutti gli altri repository configurati sul sistema che non dispongono di un file signed-by
(vedi sotto) opzione, 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 mentre il apt-key
messaggio di deprecazione dice a “gestire invece i file di portachiavi in trusted.gpg.d“, il wiki Debian afferma diversamente, perché l’aggiunta di chiavi OpenPGP a /etc/apt/trusted.gpg
e /etc/apt/trusted.gpg.d
è altrettanto insicuro, come accennato in precedenza.
Puoi continuare a usare apt-key per ora poiché funziona ancora. Tuttavia, sarebbe una buona idea iniziare la transizione all’utilizzo di signed-by
opzione come spiegato di seguito, soprattutto se gestisci un repository di terze parti.
Allora qual è il modo corretto e sicuro per aggiungere repository di terze parti (non ufficiali) e le loro chiavi di firma OpenPGP su distribuzioni Debian, Ubuntu e Linux basate su queste, come Linux Mint, Pop! _OS, OS elementare e così via, per sostituire il chiave apt deprecata?
1. Scarica la chiave del repository APT
Secondo il wiki Debian, la chiave dovrebbe essere scaricata tramite HTTPS in una posizione scrivibile solo da root, ad esempio /usr/share/keyrings
. Il nome della chiave deve contenere un nome breve che descrive il repository, seguito da archive-keyring
. Ad esempio, se viene chiamato il repository myrepository
, il file della chiave dovrebbe essere denominato myrepository-archive-keyring.gpg
.
Il file della chiave OpenPGP può essere protetto da ASCII oppure no. Per verificare se un file chiave è protetto da ASCII, scarica il file della chiave ed esegui questo comando (nota che l’estensione della chiave può essere .gpg, .asc, .key e probabilmente altre):
file <repo-key>.gpg
Se l’output di questo comando è simile al seguente, la chiave è armatura ascii:
repo-key.gpg: PGP public key block Public-Key (old)
Detto questo, ecco come scaricare e aggiungere correttamente e in sicurezza una chiave di firma del repository al tuo sistema:
- Per chiavi OpenPGP con armatura ascii
Per scaricare utilizzando wget e aggiungere 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 fa / significa tutto in questo comando:
wget
scarica la chiave dahttps://example.com/key/repo-key.gpg
e restituisce la chiave per stdout (-O-
). Sostituisci qui l’URL con l’URL della chiave che desideri scaricare e aggiungere al tuo sistemagpg --dearmor
: ilgpg
command è lo strumento di crittografia e firma OpenPGP; suo--dearmor
opzione decomprime l’input da un’armatura ASCII OpenPGPsudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg
: come super utente (sudo
), leggi lo standard input, che in questo caso è l’output fornito dagpg --dearmor
e scrivi questo al/usr/share/keyrings/<myrepository>-archive-keyring.gpg
file. Sostituisci il<myrepository>
nome con un nome descrittivo per la chiave del repository che stai aggiungendo
Ad esempio, per aggiungere il repository APT dell’applicazione Signal, dovresti utilizzare:
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg
O per usare il comando dato come esempio nel wiki Debian (è necessario eseguirlo come root, ad esempio dopo l’esecuzione sudo -i
; utilizza 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 APT di Signal:
curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /usr/share/keyrings/signal-archive-keyring.gpg
- Per chiavi OpenPGP non armate con ASCII
Scarica la chiave OpenPGP usando wget e aggiungila al tuo sistema usando:
wget -O- <https://example.com/key/repo-key.gpg> | sudo tee /usr/share/keyrings/<myrepository-archive-keyring.gpg>
O per usare il comando fornito come esempio nel wiki Debian (è necessario eseguirlo come root, ad esempio dopo l’esecuzione 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 armata con ASCII.
- Per importare le chiavi OpenPGP direttamente da un server delle chiavi in un file in formato
/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
, puoi usare qualche altro server chiave se lo desideri.
Esempio in cui importeremo la chiave OpenPGP di Linux Uprising Shutter PPA in /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg
(l’impronta digitale può essere ottenuta facendo clic sul collegamento verde “Dettagli tecnici su questo PPA” dalla pagina PPA – è sotto “Aggiunta di questo PPA al 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: Come impedire l’aggiornamento di un pacchetto in Ubuntu, Debian o Linux Mint [APT]
2. Aggiungere la voce repository sources.list
Le voci del repository di terze parti sources.list dovrebbero essere aggiunte nel file /etc/apt/sources.list.d
directory e non direttamente nella directory /etc/apt/sources.list
file.
In precedenza, 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 al 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 vuoi aggiungere anche il file arch=amd64
opzione insieme a signed-by
, devi separare le due opzioni da uno spazio, in questo modo:
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 Signal 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
) chiamato signal.list
in /etc/apt/sources.list.d
con i seguenti contenuti (supponendo che tu abbia già scaricato la chiave come spiegato 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 correre sudo apt update
dopo aver aggiunto una nuova chiave di firma e un nuovo repository, per aggiornare le sorgenti del software.
Puoi anche aggiungere il repository nel formato di file Deb822, ma per cercare di non complicare ulteriormente le cose, non lo spiegherò qui. Puoi leggere a riguardo sul wiki Debian.
Potrebbe piacerti anche: Come trovare il pacchetto che fornisce un file (installato o meno) su Ubuntu, Debian o Linux Mint
Come rimuovere una chiave OpenPGP già esistente aggiunta al portachiavi fidato di APT (/etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d)
Quando si aggiungono le chiavi OpenGPG come spiegato sopra, ti consigliamo di rimuovere la stessa chiave da /etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d, nel caso in cui l’hai aggiunta in precedenza. Senza farlo, non ci sono ulteriori vantaggi in termini di sicurezza.
Rimozione delle chiavi OpenPGP esistenti dal file /etc/apt/trusted.gpg.d
directory dovrebbe essere abbastanza facile. Questo perché il nome del file della chiave dovrebbe essere piuttosto descrittivo. Ad esempio, il nome file della chiave gpg del repository Tor da questa directory sul mio sistema è deb.torproject.org-keyring.gpg
Quindi, per sbarazzarsi di chiavi già esistenti aggiunte a /etc/apt/trusted.gpg.d
, tutto quello che devi fare è rimuovere i file chiave. Devi farlo come root, quindi apri il file manager di tua scelta come root, usando admin://
(ad esempio, per aprire una posizione come root in Nautilus, premere Ctrl + L
in modo da poter digitare nella barra degli indirizzi e digitare admin:///etc/apt/trusted.gpg.d
) o rimuoverli dalla riga di comando, utilizzando:
sudo rm /etc/apt/trusted.gpg.d/<myrepository-keyring.gpg>
Le istruzioni seguenti funzionano anche per rimuovere le chiavi dal file /etc/apt/trusted.gpg.d
directory.
Quanto a rimuovere le chiavi APT gpg memorizzate in /etc/apt/trusted.gpg
, le cose sono un po ‘più complicate. Usa il seguente comando per elencare tutte le chiavi APT OpenPGP importate in entrambi /etc/apt/trusted.gpg
e /etc/apt/trusted.gpg.d
:
apt-key list
Le chiavi memorizzate in /etc/apt/trusted.gpg
dovrebbe essere elencato in alto, seguito dai tasti del file /etc/apt/trusted.gpg.d
directory. Dovrai ispezionare la chiave uid
per capire la chiave che vuoi rimuovere. Di solito, l’uid dovrebbe mostrare l’azienda o l’utente che ha firmato la chiave, seguito dal loro indirizzo email.
Chiavi da /etc/apt/trusted.gpg
sono elencati da apt-key
elenco come questo (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) <info@virtualbox.org>
sub rsa4096 2016-04-22 [E]
L’ID chiave è costituito dagli ultimi 8 caratteri dell’impronta digitale della chiave GPG (quindi in questo esempio è 2980AECF
).
Per eliminare una chiave (da entrambi /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, dovresti utilizzare:
sudo apt-key del 2980AECF
Potrebbe piacerti: Come elencare tutti i pacchetti in un repository su Ubuntu, Debian o Linux Mint [APT]
Riferimenti:
Grazie a u / ZebNemeth per il suggerimento!