GNU/Linux >> Linux Esercitazione >  >> Debian

apt-key non è aggiornato. Come aggiungere chiavi di firma del repository OpenPGP senza di esse su Debian, Ubuntu, Linux Mint, Pop! _OS, ecc.

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 da https://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 :il gpg 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 di gpg --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!


Debian
  1. Come installare Pip su Ubuntu 18.04, Debian 9 e Linux Mint 19

  2. Come installare VLC 2.0.6 su Ubuntu 12.10, Linux Mint 14

  3. Come aggiornare la chiave GPG per il repository MySQL APT su Debian/Ubuntu?

  4. Debian – Impossibile aggiungere la chiave Gpg con la chiave Apt dietro un proxy?

  5. Come compilare e installare wxWidgets su Ubuntu/Debian/Linux Mint

Come aggiungere un repository a Debian

Come installare il codice di Visual Studio su Ubuntu 18.04 / Linux Mint 19 e Debian 9

Come scaricare pacchetti con dipendenze localmente in Ubuntu, Debian, Linux Mint, Pop OS

Come configurare le chiavi SSH su Debian 11 Linux

Come impedire l'aggiornamento di un pacchetto in Ubuntu, Debian o Linux Mint [APT]

Come installare e utilizzare Tor (client) come proxy in Ubuntu, Pop! _OS o Linux Mint