Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Repository/GestioneRepositoryTerzeParti"
Differenze tra le versioni 2 e 3
Versione 2 del 05/06/2022 11.29.22
Dimensione: 8481
Commento: + errore «Key is stored in legacy trusted.gpg keyring»
Versione 3 del 05/06/2022 11.30.01
Dimensione: 8485
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 9: Linea 9:
A partire dal rilascio '''Ubuntu 22.04''' posono comparire errori simili ai seguenti:{{{ A partire dal rilascio '''Ubuntu 22.04''' potrebbero comparire errori simili ai seguenti:{{{


Guida verificata con Ubuntu: 22.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

A partire dal rilascio Ubuntu 22.04 potrebbero comparire errori simili ai seguenti:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

contestualmente o in seguito all'installazione della chiave di autenticazione di un repository di terze parti, oppure quando l'installazione di programmi esterni tramite file .deb comporta l'aggiunta automatica dei loro repository.

Questo errore è causato dall'utilizzo dello strumento apt-key, usato per caricare le chiavi di autenticazione dei repository di terze parti, che però è stato deprecato a favore di una procedura ritenuta più sicura.

Questa guida spiega le procedure, tramite comandi eseguiti nel terminale, per aggiungere e gestire repository e chiavi di autenticazione di terze parti, valide per Ubuntu 22.04 (ultima versione in cui sarà presente apt-key) e successive.

Tutte le procedure descritte di seguito utilizzano nomi generici quali esempio.com per il repository, esempio-keyring.gpg per la chiave, ecc.
Sostituire gli indirizzi e i nomi dei file indicati con quelli effettivi.

Queste procedure non sono necessarie con i PPA (Repository Launchpad).

Motivi del cambiamento

In conformità alla Policy di Debian, è richiesto che ogni repository di terze parti venga autenticato con una chiave di autenticazione OpenPGP, evitando quindi di usare il formato Ascii-armored, e di utilizzare per il collegamento il protocollo HTTPS (più sicuro nei confronti di attacchi MITM).

Inoltre apt-key, in aderenza alle funzionalità di apt, alloca le chiavi di autenticazione dei repository di terze parti in /etc/apt/trusted.gpg e/o /etc/apt/trusted.gpg.d. Queste posizioni però sono ritenute sempre sicure da apt, con il conseguente rischio che un repository di terze parti possa virtualmente installare o sostituire qualsiasi pacchetto nel sistema.

Pertanto apt-key potrebbe esporre il sistema a potenziali violazioni della sicurezza. Da qui la decisione di separare la gestione e l'allocazione delle chiavi di autenticazione.

Gestione delle chiavi

Installazione con apt-key (deprecata)

Le seguenti istruzioni vengono riportate al solo scopo di mostrare le differenze con la procedura più recente.

  • Per importare la chiave di autenticazione dei pacchetti del repository, è usata la stringa:

    wget -qO - https://esempio.com/esempio-keyring.gpg | sudo apt-key add -

    Il comando salva la chiave di autenticazione nel file /etc/apt/trusted.gpg o nella cartella /etc/apt/trusted.gpg.d.

  • Per installare il repository dei pacchetti è usata la stringa:

    echo "deb https://esempio.com/ all main" | sudo tee /etc/apt/sources.list.d/esempio.list

    Con questo comando l'indirizzo del repository viene semplicemente copiato in un file omonimo allocato nella cartella /etc/apt/sources.list.d/.

Installazione diretta del file gpg

  • Per importare la chiave di autenticazione del repository, è usata la stringa:

    wget -qO - https://esempio.com/esempio-keyring.gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/esempio-keyring.gpg -

    La pipe intermedia «| gpg --dearmor |» serve per convertire una chiave di autenticazione eventualmente distribuita dal formato .asc (Ascii-armored) al formato .gpg (GNU Privacy Guard). Se la chiave è già nel formato .gpg, il comando viene ignorato. Viene infine specificata la cartella /etc/apt/keyrings/, posizione dove viene salvata la chiave.

    • La Policy Debian suggerisce di allocare le chiavi di autenticazione nella cartella /usr/share/keyrings. A partire dalla versione 2.4 di apt viene fornita come destinazione /etc/apt/keyrings. Possono essere scelte anche posizioni personali, come ad esempio /usr/local/share/keyrings o altre.

  • Per importare il repository dei pacchetti, è usata la stringa:

    echo "deb [signed-by=/etc/apt/keyrings/esempio-keyring.gpg] https://esempio.com/ all main" | sudo tee /etc/apt/sources.list.d/esempio.list

    dove viene aggiunta l'opzione signed-by= (racchiusa tra parentesi quadre) che serve ad indicare il percorso dove viene salvata la chiave di autenticazione del repository (selezionata nel comando precedente).

    • Se già presenti delle parentesi quadre con indicata un'altra opzione (ad esempio [arch=amd64]), aggiungere semplicemente l'opzione signed-by=/percorso/file.gpg all'interno delle parentesi esistenti, separata dall'altra opzione con uno spazio.

  • Infine, per garantire una maggiore sicurezza rispetto ad usi impropri delle chiavi, occorre assegnare la chiave di autenticazione all'utente root e limitarne i permessi di esecuzione. A tale scopo utilizzare i comandi:

    sudo chown root:root esempio-keyring.gpg
    sudo chmod 644 esempio-keyring.gpg

Chiave di autenticazione numerica

Nel caso la chiave d'autenticazione venga fornita in forma numerica esadecimale, del tipo:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xA1B2C3D4

occorre modificare la sinossi in questo modo:

sudo gpg --no-default-keyring --keyring /etc/apt/keyrings/esempio.gpg --recv-keys --keyserver keyserver.ubuntu.com 0xA1B2C3D4

Ricordare di anteporre sempre nella nuova procedura «0x» al codice numerico esadecimale.

Chiavi aggiunte in precedenza

In caso di chiavi ottenute in precedenza, sarà sufficiente spostarle da /etc/apt/trusted.gpg.d (o eventualmente anche da /etc/apt/trusted.gpg) nella directory prescelta (ad esempio /etc/apt/keyrings).

Dovrà poi essere modificato, se necessario, il relativo file .list all'interno di /etc/apt/sources.list.d secondo la sintassi descritta precedentemente.

Benché deprecato, è comunque possibile utilizzare apt-key per ottenere un elenco delle chiavi presenti, digitando il comando:

sudo apt-key list

Esempio generico di aggiunta di un repository di terze parti

Quello che segue è un esempio pratico dell'utilizzo dei precedenti passaggi, eseguiti in sequenza.

  1. Importare la chiave di firma dei pacchetti del repository:

    wget -qO - https://esempio.com/esempio-keyring.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/esempio-keyring.gpg -
  2. Importare il repository:

    echo "deb [signed-by=/etc/apt/keyrings/esempio-keyring.gpg] https://esempio.com/ stable main" | sudo tee /etc/apt/sources.list.d/esempio.list
  3. Cambiare in root il proprietario del file .gpg:

    sudo chown root:root /etc/apt/keyrings/esempio-keyring.gpg
  4. Limitare i permessi d'esecuzione del file .gpg:

    sudo chmod 644 /etc/apt/keyrings/esempio-keyring.gpg

Terminata la procedura, sarà possibile utilizzare il repository di terze parti per installare e/o aggiornare i pacchetti desiderati, tramite le consuete modalità.

Ulteriori risorse

CategoryAmministrazione