Difference between revisions of "Pacman/Package signing (Italiano)"

From ArchWiki
Jump to: navigation, search
(Sezione "Aggiornare il portachiavi" aggiunta)
(Allineamento all'inglese: + */Rimuovere pacchetti non aggiornati/*)
(44 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Pacman development (English)]]
+
{{Lowercase title}}
{{i18n|Pacman-key}}
+
[[Category:Pacman development (Italiano)]]
 +
[[en:Pacman-key]]
 +
[[es:Pacman-key]]
 
[[fr:pacman-key]]
 
[[fr:pacman-key]]
 +
[[ru:Pacman-key]]
 +
[[tr:pacman paket imzaları]]
 +
[[zh-CN:Pacman-key]]
 +
Pacman-key è un nuovo tool disponibile con pacman 4. Con la nuova implementazione dei pacchetti firmati, permette all'utente di amministrarne la lista delle chiavi affidabili in pacman.
  
Pacman-key è un nuovo tool disponibile con pacman 4. Con la nuova implementazione dei pacchetti firmati, permette all'utente di amministrarne la lista delle chiavi affidabili in pacman. Per un po' di storia sulla questione, si rimanda a questi articoli blog:
+
==Introduzione==
 +
Il sistema di firmatura pacchetti in pacman utilizza il modello [http://it.wikipedia.org/wiki/Web_of_trust "web of trust"] per assicurare che i pacchetti vengano dagli sviluppatori e non da qualcuno che si sostituisca a loro indebitamente. Gli sviluppatori dei pacchetti e i Trusted User hanno chiavi PGP individuali che utilizzano per firmare i propri pacchetti. Questo significa che loro garantiscono il contenuto del pacchetto. Anche l'utente comune possiede una PGP key unica, che viene generata quando questi configura pacman-key.
 +
 
 +
Le chiavi possono essere usate per firmare ''altre'' key. Ciò significa che il proprietario della chiave firmante garantisce per l'autenticità della chiave firmata. Per verificare un pacchetto, è necessario avere una catena di firme dalla propria chiave PGP al pacchetto stesso. Con la struttura di chiavi Arch questo può avventire in tre modi:
 +
* '''Pacchetti personali (custom)''': l'utente crea da sé il proprio pacchetto e lo firma con una key personale.
 +
* '''Pacchetti non ufficiali (unofficial)''': uno sviluppatore fa un pacchetto e lo firma. L'utente utilizza la propria key per firmare quella dello sviluppatore.
 +
* '''Pacchetti ufficiali (official)''': uno sviluppatore fa un pacchetto e lo firma. La chiave dello sviluppatore viene convalidata dalle chiavi principali (master-key). L'utente fa poi affidamento su queste ultime per garantire gli sviluppatori.
 +
Per un po' di storia sulla questione, si rimanda a questi articoli blog:
 
[http://allanmcrae.com/2011/08/pacman-package-signing-1-makepkg-and-repo-add/]
 
[http://allanmcrae.com/2011/08/pacman-package-signing-1-makepkg-and-repo-add/]
 
[http://allanmcrae.com/2011/08/pacman-package-signing-2-pacman-key/]
 
[http://allanmcrae.com/2011/08/pacman-package-signing-2-pacman-key/]
Line 9: Line 22:
 
[http://allanmcrae.com/2011/12/pacman-package-signing-4-arch-linux/] e alla [https://wiki.archlinux.org/index.php/Package_Signing_Proposal_for_Pacman proposta di controllo delle firme in Pacman] della wiki.
 
[http://allanmcrae.com/2011/12/pacman-package-signing-4-arch-linux/] e alla [https://wiki.archlinux.org/index.php/Package_Signing_Proposal_for_Pacman proposta di controllo delle firme in Pacman] della wiki.
  
==Funzionamento==
+
{{Nota|Il protocollo HKP usa la porta 11371/tcp per comunicare. Per ricevere le chiavi firmate dai server (usando pacman-key), è richiesto che questa porta sia aperta.}}
Il sistema di firmatura pacchetti in pacman utilizza il modello [http://it.wikipedia.org/wiki/Web_of_trust "web of trust"] per assicurare che i pacchetti vengono dagli sviluppatori e non da qualcuno che si sostituisca a loro indebitamente. Gli sviluppatori dei pacchetti e i Trusted User hanno chiavi PGP individuali che utilizzano per firmare i propri pacchetti. Questo significa che loro garantiscono il contenuto del pacchetto. Anche l'utente comune possiede una PGP key unica, che viene generata quando questi configura pacman-key.
+
  
Le chiavi possono essere usate per firmare ''altre'' key. Ciò signigica che il proprietario della chiave firmante garantisce per l'autenticità della chiave firmata. Per verificare un pacchetto, è necessario avere un collegamento di firme dalla propria chiave PGP al pacchetto stesso. Con la struttura di chiavi Arch questo può avventire intre modi:
+
==Installazione==
* '''Pacchetti personali (custom)''': l'utente crea da sé il proprio pacchetto e lo firma con una key personale.
+
===Configurare pacman===
* '''Pacchetti non ufficiali (unofficial)''': uno sviluppatore fa un pacchetto e lo firma. L'utente utilizza la propria key per firmare quella dello sviluppatore.
+
Prima di tutto, si deve decidere che livello di controllo si desidera. A determinarlo è l'opzione {{ic|SigLevel}} nel file {{ic|/etc/pacman.conf}}. Alcune possibilità sono menzionate nei commenti di quel file. Per un'esposizione più dettagliata, si rimanda alla [https://www.archlinux.org/pacman/pacman.conf.5.html#_package_and_database_signature_checking pagina di manuale {{ic|pacman.conf}}]. Fondamentalmente si può abilitare il controlle delle firme a livello globale o per repository. Si tenga presente che settando il SigLevel a livello globale (globally) nella sezione [options], non sarà permesso di installare i propri pacchetti usando il comando {{ic|pacman -U}}, a meno che siano firmati da una trusted key.
* '''Pacchetti ufficiali (official)''': uno sviluppatore fa un pacchetto e lo firma. La chiave dello sviluppatore viene firmata dalle chiavi principali (master-key). L'utente fa poi affidamento su queste ultime per garantire gli sviluppatori.
+
  
==Disabilitare il controllo delle firme==
+
{{warning|L'opzione {{ic|SigLevel}} {{ic|TrustAll}} esiste per uno scopo di debugging. Essa rende molto facile convalidare key che non sono state verificate. L'utente dovrebbe usare l'opzione {{ic|TrustedOnly}} per tutti i repository ufficiali.}}
{{warning|Usare con cautela. Disabilitare la firma dei pacchetti permette a pacman di installare automaticamente pacchetti inaffidabili.}}
+
  
Se non si è interessati alla firma dei pacchetti, è possibile disabilitare il controllo delle firme PGP completamente. È sufficiente modificare {{ic|/etc/pacman.conf}} e scommentare la linea seguente sotto [options]:
+
{{Note|Ad ora, Aprile 2012, il sistema di firme del database non è ancora stato completato, quindi si dovrebbe aggiungere l'opzione {{ic|DatabaseOptional}} se si usa un livello di controllo {{ic|Required}}, ad esempio:
SigLevel = Never
+
{{bc|1=SigLevel = Required DatabaseOptional TrustedOnly}}
Da ciò consegue l'assenza di controllo delle firme (il comportamento predefinito prima di pacman 4). Se si decide di farlo, non è necessario impostare un portachiavi con pacman-key. Sarà possibile modificare tale opzione, qualora si decida di abilitare la verifica dei pacchetti.
+
In questo modo pacman installerà soltanto i pacchetti che sono firmati da chiavi che l'utente ha convalidato.}}
  
==Installazione==
+
{{Note|Sembra che {{ic|1=SigLevel = PackageRequired}} stia per diventare l'opzione standard per la verifica dei pacchetti ufficiali:
===Configurare pacman===
+
{{bc|1=[core]
Prima di tutto, si deve decidere che livello di controllo si desidera. A determinarlo è l'opzione {{ic|SigLevel}} nel file {{ic|/etc/pacman.conf}}. Alcune possibilità sono menzionate nei commenti di quel file. Per un'esposizione più dettagliata, si rimanda alla pagina di manuale di {{ic|pacman.conf}}.
+
SigLevel = PackageRequired
 
+
Include = /etc/pacman.d/mirrorlist}}}}
È opportuno prendere nota delle implicazioni delle due opzioni seguenti e ricordare quale si sceglie nel configurare il proprio portachiavi:
+
* '''TrustedOnly''': Solo le chiavi che sono state convalidate dall'utente sono considerate affidabili. È possibile aggiungere key al proprio portachiavi senza preoccupazioni. Questa è l'opzione di default.
+
* '''TrustAll''': Ogni chiave nel proprio portachiavi è considerata affidabile. È necessaria molta cautela da parte dell'utente nell'aggiungere chiavi.
+
  
 
===Inizializzare il portachiavi===
 
===Inizializzare il portachiavi===
Per impostare il portachiavi di pacman, usare il comando:
+
Per inizializzare il portachiavi di pacman, usare il comando:
 
  # pacman-key --init
 
  # pacman-key --init
  
In tal modo si crea un nuovo portachiavi in {{ic|/etc/pacman.d/gnupg}} e si genera una chiave principale (master-key) unica per il proprio sistema.
+
Per questa inizializzazione è richiesta [[Wikipedia:Entropia|entropia]]. Per generarla, muovere il proprio mouse, premere caratteri a caso nella tastiera o avviare attività basata sul disco (ad esempio in un'altra console dare {{ic|ls -R /}} o {{ic|find / -name foo}}). Se il proprio sistema non ha già sufficiente entropia, questo potrebbe richiedere delle ore. Invece, generare in modo attivo entropia permette di completare il passaggio molto più velocemente.
  
==Gestire il portachiavi==
+
La casualità creata viene utilizzate per impostae un nuovo portachiavi ({{ic|/etc/pacman.d/gnupg}}) e la chiave GPG firmante principale del proprio sistema.
Le chiavi che sono necessarie per verificare le firme dei pacchetti sono raccolte in un "portachiavi" gestito da pacman-key. Quando è necessaria una key e questa non si trova nel portachiavi, pacman e pacman-key possono recuperarla da un keyserver. Il keyserver da usare è configurato in {{ic|/etc/pacman.d/gnupg/gpg.conf}}. È possibile sostituirlo usando l'opzione {{ic|--keyserver}} da riga di comando.  (Se si stanno cercando keyserver diversi, è possibile trovare una piccola lista sull'[[wikipedia:Key server (cryptographic)|articolo di Wikipedia]].)
+
  
Le chiavi PGP di solito sono troppo grandi (2048 bit o più) perché le persone possano lavorarci, quindi di solito sono spezzate per creare una fingerprint a 40 cifre esadecimali. Le ultime otto cifre sono note come "key ID" e sono una sorta di "nome" della key.  La fingerprint più lunga si deve usare qualora si voglia controllare a mano che le due chiavi siano le medesime.
+
Affinché pacman comincia a controllare le firme dei pacchetti, si devono importare le chiavi degli sviluppatori nel proprio portachiavi. La prossima sezione spiegherà come fare.
  
===Chiavi principali o master-key===
+
{{Nota|Se si necessita di avviare {{ic|pacman-key --init}} su SSH, installare il pacchetto {{Pkg|haveged}} sulla macchina in questione, connettersi via SSH e dare:
Le master-key sono cinque chiavi principali di Arch Linux, che sono utilizzate per firmare le key di sviluppatori e Trusted User. Queste chiavi dovrebbero essere nel portachiavi dell'utente. Si possono trovare le keyIDs dalla [https://www.archlinux.org/master-keys/ pagina delle Master Key].  Per installarle, dare il comando:
+
{{bc|# pacman-key -r <keyid> <keyid> <keyid> <keyid> <keyid>}}
+
Attenzione: qualora il proprio SigLevel sia impostato su TrustAll, sarà necessario verificare le chiavi prima di lanciare il comando in questione, in quanto qualsiasi chiave si scarichi, sarà automaticamente dichiarata affidabile!
+
  
Si potrebbe aver bisogno di firmare in locale queste key ed inpostare il loro livello di affidabilità come per lo meno "marginal" (marginale):
+
# rc.d start haveged
{{bc|
+
# pacman-key --init
# pacman-key --edit-key <keyid> <keyid> <keyid> <keyid> <keyid>
+
}}
+
Prima di firmare e rendere affidabile qualsiasi chiave, si deve verificare la sua fingerprint. Il modo più sicuro per farlo è di ''non'' utilizzare un computer, ad esempio, telefonare ad Allan , offrirgli una birra e chiederla a lui di persona. Scherzi a parte, è ragionevolmente sicuro controllare la fingerprint conforntando liste diverse, come la [https://www.archlinux.org/master-keys/ pagina delle Master Key] e [http://allanmcrae.com/2011/12/pacman-package-signing-4-arch-linux/ il blog di Allan].
+
  
{{bc|
+
Dopo che pacman-key è stato avviato con successo semplicemente si fermi haveged e si rimuova il pacchetto.
gpg> lsign
+
 
...
+
# pkill haveged
Primary key fingerprint: ...
+
# pacman -Rs haveged
...
+
La soluzione {{Pkg|haveged}} non è da usarsi solo su SSH: è anzi un modo veloce per raccogliere velocemente entropia. Se pacman-key --init sta richiedendo anni, si può provare questa soluzione.  
Really sign? (y/N)
+
}}
+
Qualora la fingerprint corrisponda, si proceda a convalidarla. È anche necessario assegnare un livello di affidabilità di almeno "marginal" (marginale) ad ogni chiave principale.
+
{{bc|
+
Really sign? (y/N) y
+
gpg> trust
+
...
+
Your decision? 3
+
gpg> q
+
Save changes? (y/N) y
+
 
}}
 
}}
Tale processo sarà da ripetere per ogni chiave principale.
 
  
==Altre key==
+
==Gestire il portachiavi==
Quando pacman incontra chiavi sconosciute sui pacchetti, chiederà all'utente di aggiungerle. Per far ciò si può scaricare il file della PGP key e avviare '{{ic|pacman-key -a key-file}}'; in alternativa è possibile reperila da un keyserver basato sulla fingerprint. Questa seconda possibilità è più semplice ed è spiegata qui sotto:
+
* Trovare la fingerprint della chiave di uno sviluppatore: si visiti la [https://www.archlinux.org/developers/ pagina degli sviluppatori] e si trovi il link PGP Key. Il link è la fingerprint.
+
* Dare il comando {{ic|pacman-key -r <fingerprint> --keyserver <key server>}}. Come keyserver <key server> utilizzare "hkp://pgp.mit.edu".
+
* {{ic|pacman-key -l}} mostra le key aggiunte.
+
* Ciò aggiunge le key al portachiavi, ma lascia il livello di affidabilità come "unknown" (sconosciuto).
+
  
==Firmare le key==
+
===Verificare le cinque chiavi principali o master-key===
Perché le chiavi funzionino il livello di affidabilità deve essere cambiato.
+
L'installazione iniziale delle chiavi è ottenuta usando
 +
# pacman-key --populate archlinux
  
Per firmare la key localmente, usare:
+
È opportuno prendersi del tempo per verificare le [https://www.archlinux.org/master-keys/ Chiavi principali] quando vengono mostrate, in quanto sono usate per co-firmare (e convalidare) tutte le altre chiavi degli sviluppatori.
  
# pacman-key --lsign-key <keyid>
+
Le chiavi PGP di solito sono troppo grandi (2048 bit o più) perché le persone possano lavorarci, quindi di solito sono spezzate per creare una fingerprint a 40 cifre esadecimali, che possono essere usate per controllare a mano che le due chiavi siano le medesime. Le ultime otto cifre sono note come "key ID" e sono una sorta di "nome" della key.
  
Ciò può essere fatto anche usando il comando di [http://it.wikipedia.org/wiki/GNU_Privacy_Guard gpg] {{ic|lsign}} o, ugualmente, {{ic|pacman-key --edit-key "<fingerprint>"}} e quindi {{ic|lsign}}  
+
===Aggiungere le chiavi degli sviluppatori===
 +
Le chiavi degli sviluppatori ufficiali e dei Trusted User vengono firmate dalle master-key, quindi all'utente non sarà necessario usare pacman-key per firmarle in locale. Nel caso in cui pacman incontri una key e non la riconosca, domanderà all'utente se desidera scaricarla dal {{ic|keyserver}} impostato in {{ic|/etc/pacman.d/gnupg/gpg.conf}} (o usasndo l'opzione {{ic|--keyserver}} da riga di comando). Wikipedia mette a disposizione una [[wikipedia:Key server (cryptographic)|lista di keyserver]].
  
Alternativamente è possibile settare pacman per convalidare ogni key nel suo portachiavi. Per quest'ultima ipotesi, si aggiunga UNA delle opzioni seguenti sotto [Options] in {{ic|/etc/pacman.conf}}
+
Una volta che la chiave di uno sviluppatore è stata scaricata, non sarà necessario farlo una seconda volta: quella key verrà usata per verificare ogni pacchetto da lui firmato.
SigLevel    = Required TrustAll
+
SigLevel    = Optional TrustAll
+
  
==Script per aggiungere le chiavi PGP richieste==
+
{{Nota|Il pacchetto {{Pkg|archlinux-keyring}} (una dipendenza di pacman) contiene le ultime chiavi. In ogni caso queste si possono aggiornare usando:
 +
# pacman-key --refresh-keys
 +
Facendo {{ic|--refresh-keys}}, anche la propria chiave locale sarà controllata sul keyserver remoto, e si riceverà una notifica sul fatto che non è stata trovata. Non è nulla di cui preoccuparsi.}}
  
Quando le chiavi principali sono state aggiunte, non è necessario convalidare ogni PGP key degli Sviluppatori Arch Linux o dei Trusted Users. Infatti esse saranno firmate da almeno tre di queste chiavi principali.  
+
===Aggiungere chiavi non ufficiali===
 +
Prima di tutto, ci si deve procurare l'ID dal proprietario della key. Dare da riga di comando:
 +
{{bc|# pacman-key -r <keyid>}}
 +
per scaricarla da un keyserver. Assicurarsi di verificare la fingerprint, come si farebbe per una chiave principale, o con ogni altra chiave che si stia per convalidare. Dopo aver fatto ciò, sarà necessario firmare localmente questa key:
 +
{{bc|# pacman-key --lsign-key <keyid>}}
 +
In questo modo si permetterà alla chiave di firmare i pacchetti.
  
===Script per aggiungere tutte le principali PGP key===
+
===Usare gpg===
Questo script aggiunge le master key alle chiavi memorizzate da pacman e imposta il livello di affidabilità a "marginal" (3).
+
Se pacman-key non fosse sufficiente, è possibile amministrare il portachiavi di pacman da '''gpg''' così:
 +
# gpg --homedir /etc/pacman.d/gnupg $OPTIONS
 +
oppure
 +
# env GNUPGHOME=/etc/pacman.d/gnupg gpg $OPTIONS
  
{{warning|Usare con cautela. Controllare che le chiavi elencate sotto corrispondano alle [https://www.archlinux.org/master-keys/ master-keys]. È possibile che qualcuno modifichi illecitamente le chiavi principali ed inserisca chiavi PGP maligne, rendendo l'intero processo di controllo inutile.}}
+
==Risoluzione dei problemi==
  
Lo script deve essere avviato come root per aggiungere le key (in alternativa si aggiunga {{ic|sudo}} davanti al comando {{ic|pacman-key}}.
+
===Impossibile importare le key===
 +
Alcuni [http://it.wikipedia.org/wiki/Internet_Service_Provider ISP] potrebbe aver bloccato la porta utilizzata per importare le chiavi PGP. Una soluzione è quella di utilizzare il keyserver del [http://it.wikipedia.org/wiki/Massachusetts_Institute_of_Technology Massachusset's Institute of Technology] che mette a disposizione una porta alternativa. Per farlo, modificare {{ic|/etc/pacman.d/gnupg/gpg.conf}}, rimpiazzando la linea dei keyserver {{ic|keyserver hkp://keys.gnupg.net}} con  {{ic|keyserver hkp://pgp.mit.edu:11371}}.
 +
Qualora ci si fosse dimenticati di avviare {{ic|pacman-key --populate archlinux}} si potrebbero avere degli errori tentando di importare le chiavi.
  
for key in FFF979E7 CDFD6BB0 4C7EA887 6AC6A4C2 824B18E8; do
+
===Disabilitare il controllo delle firme===
    pacman-key --recv-keys $key
+
{{warning|Usare con cautela. Disabilitare la firma dei pacchetti permette a pacman di installare automaticamente pacchetti inaffidabili.}}
    pacman-key --lsign-key $key
+
    printf 'trust\n3\nquit\n' | gpg --homedir /etc/pacman.d/gnupg/ \
+
        --no-permission-warning --command-fd 0 --edit-key $key
+
done
+
  
===Script per aggiungere tutte le chiavi PGP degli sviluppatori dalla [https://www.archlinux.org/developers/ pagina Sviluppatori]===
+
Se non si è interessati alla firma dei pacchetti, è possibile disabilitare il controllo delle firme PGP completamente. È sufficiente modificare {{ic|/etc/pacman.conf}} e scommentare la linea seguente sotto [options]:
 +
SigLevel = Never
 +
Inoltre, nei singoli repository, è necessario commentare ogni settaggio del SigLevel specifico, in quanto essi sovrascrivono la configurazione globale.
 +
Da ciò consegue l'assenza di controllo delle firme (il comportamento predefinito prima di pacman 4). Se si decide di farlo, non è necessario impostare un portachiavi con pacman-key. Sarà possibile modificare tale opzione, qualora si decida di abilitare la verifica dei pacchetti.
  
Questo script usa {{pkg|curl}} per scaricare la pagina Sviluppatori ed estrarre le fingerprint delle chiavi PGP. Quindi, con {{ic|pacman --recv-keys}} e {{ic|pgp.mit.edu}} come keyserver, li aggiunge al portachiavi pacman.
+
===Resettare tutte le chiavi===
 +
Se si desidera rimuovere ogni chiave installata nel proprio sistema, basta eliminare da root la cartella {{ic|/etc/pacman.d/gnupg}} e dare di nuovo il comando {{ic|pacman-key --init}} per generare una nuova chiave catena personale. Quindi sarà possibile procedere ad aggiungere nuove chiavi come meglio si desidera.
  
{{warning|Usare con cautela. È possibile che qualcuno modifichi illecitamente la pagina Sviluppatori ed inserisca chiavi PGP maligne, rendendo l'intero processo di controllo inutile.}}
+
===Rimuovere pacchetti non aggiornati===
  
Lo script deve essere avviato come root per aggiungere le key (in alternativa si aggiunga {{ic|sudo}} davanti al comando {{ic|pacman-key}}.
+
Se gli stessi pacchetti continuano a fallire l'installazione o l'aggiornamento e si è certi di aver eseguito il procedimento d'installazione di pacman-key in maniera corretta, si provi a rimuovere questi pacchetti con {{ic|rm /var/cache/pacman/pkg/pacchettocattivo*}}. In questo modo saranno riscaricati dal processo di aggiornamento.
  
curl <nowiki>https://www.archlinux.org/developers/</nowiki> |
+
Se si sta avendo l'errore {{ic|error: failed to commit transaction (invalid or corrupted package)}}, si guardino i file *.part (pacchetti parzialmente scaricati) in /var/cache/pacman/pkg e si rimuovano.
awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' |
+
xargs pacman-key --recv-keys
+
  
===Script per aggiungere tutte le chiavi PGP dei trusted users dalla [https://www.archlinux.org/trustedusers/ pagina Trusted Users ]===
 
  
Questo script usa {{pkg|curl}} per scaricare la pagina Trusted Users ed estrarre le fingerprint delle chiavi PGP. Quindi, con {{ic|pacman --recv-keys}} e {{ic|pgp.mit.edu}} come keyserver, li aggiunge al portachiavi pacman.
+
==Fonti aggiuntive==
 
+
* [[Package Signing Proposal for Pacman|Wiki degli Sviluppatori:Proposta di firma dei pacchetti per Pacman]]
{{warning|Usare con cautela. È possibile che qualcuno modifichi illecitamente la pagina Trusted Users ed inserisca chiavi PGP maligne, rendendo l'intero processo di controllo inutile.}}
+
* [http://allanmcrae.com/2011/08/pacman-package-signing-1-makepkg-and-repo-add/ Firma dei pacchetti di Pacman – 1: Makepkg e Aggiunta Repo]
 
+
* [http://allanmcrae.com/2011/08/pacman-package-signing-2-pacman-key/ Firma dei pacchetti di Pacman – 2: Pacman-key]
Lo script deve essere avviato come root per aggiungere le key (in alternativa si aggiunga {{ic|sudo}} davanti al comando {{ic|pacman-key}}.
+
* [http://allanmcrae.com/2011/08/pacman-package-signing-3-pacman/ Firma dei pacchetti di Pacman – 3: Pacman]
 
+
* [http://allanmcrae.com/2011/12/pacman-package-signing-4-arch-linux/ Firma dei pacchetti di Pacman – 4: Arch Linux]
curl <nowiki>https://www.archlinux.org/trustedusers/</nowiki> |
+
awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' |
+
xargs pacman-key --recv-keys
+
 
+
=== Script per aggiungere tutte le PGP key (sia degli Sviluppatori che dei Trusted Users) ===
+
 
+
{{warning|Usare con cautela. È possibile che qualcuno modifichi illecitamente la pagina Sviluppatori/Trusted Users ed inserisca chiavi PGP maligne, rendendo l'intero processo di controllo inutile.}}
+
 
+
curl <nowiki>https://www.archlinux.org/{developers,trustedusers}/</nowiki> |
+
awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' |
+
xargs pacman-key --recv-keys
+
 
+
==Risoluzione dei problemi==
+
 
+
===Impossibile importare le key===
+
Alcuni [http://it.wikipedia.org/wiki/Internet_Service_Provider ISP] potrebbe aver bloccato la porta utilizzata per importare le chiavi PGP. Una soluzione è quella di utilizzare il keyserver del [http://it.wikipedia.org/wiki/Massachusetts_Institute_of_Technology Massachusset's Institute of Technology] che mette a disposizione una porta alternativa. Per farlo, modificare {{ic|/etc/pacman.d/gnupg/gpg.conf}}, rimpiazzando la linea dei keyserver {{ic|keyserver hkp://keys.gnupg.net}} con  {{ic|keyserver hkp://pgp.mit.edu:11371}}.
+

Revision as of 06:56, 19 August 2012

Pacman-key è un nuovo tool disponibile con pacman 4. Con la nuova implementazione dei pacchetti firmati, permette all'utente di amministrarne la lista delle chiavi affidabili in pacman.

Introduzione

Il sistema di firmatura pacchetti in pacman utilizza il modello "web of trust" per assicurare che i pacchetti vengano dagli sviluppatori e non da qualcuno che si sostituisca a loro indebitamente. Gli sviluppatori dei pacchetti e i Trusted User hanno chiavi PGP individuali che utilizzano per firmare i propri pacchetti. Questo significa che loro garantiscono il contenuto del pacchetto. Anche l'utente comune possiede una PGP key unica, che viene generata quando questi configura pacman-key.

Le chiavi possono essere usate per firmare altre key. Ciò significa che il proprietario della chiave firmante garantisce per l'autenticità della chiave firmata. Per verificare un pacchetto, è necessario avere una catena di firme dalla propria chiave PGP al pacchetto stesso. Con la struttura di chiavi Arch questo può avventire in tre modi:

  • Pacchetti personali (custom): l'utente crea da sé il proprio pacchetto e lo firma con una key personale.
  • Pacchetti non ufficiali (unofficial): uno sviluppatore fa un pacchetto e lo firma. L'utente utilizza la propria key per firmare quella dello sviluppatore.
  • Pacchetti ufficiali (official): uno sviluppatore fa un pacchetto e lo firma. La chiave dello sviluppatore viene convalidata dalle chiavi principali (master-key). L'utente fa poi affidamento su queste ultime per garantire gli sviluppatori.

Per un po' di storia sulla questione, si rimanda a questi articoli blog: [1] [2] [3] [4] e alla proposta di controllo delle firme in Pacman della wiki.

Nota: Il protocollo HKP usa la porta 11371/tcp per comunicare. Per ricevere le chiavi firmate dai server (usando pacman-key), è richiesto che questa porta sia aperta.

Installazione

Configurare pacman

Prima di tutto, si deve decidere che livello di controllo si desidera. A determinarlo è l'opzione SigLevel nel file /etc/pacman.conf. Alcune possibilità sono menzionate nei commenti di quel file. Per un'esposizione più dettagliata, si rimanda alla pagina di manuale pacman.conf. Fondamentalmente si può abilitare il controlle delle firme a livello globale o per repository. Si tenga presente che settando il SigLevel a livello globale (globally) nella sezione [options], non sarà permesso di installare i propri pacchetti usando il comando pacman -U, a meno che siano firmati da una trusted key.

Warning: L'opzione SigLevel TrustAll esiste per uno scopo di debugging. Essa rende molto facile convalidare key che non sono state verificate. L'utente dovrebbe usare l'opzione TrustedOnly per tutti i repository ufficiali.
Note: Ad ora, Aprile 2012, il sistema di firme del database non è ancora stato completato, quindi si dovrebbe aggiungere l'opzione DatabaseOptional se si usa un livello di controllo Required, ad esempio:
SigLevel = Required DatabaseOptional TrustedOnly
In questo modo pacman installerà soltanto i pacchetti che sono firmati da chiavi che l'utente ha convalidato.
Note: Sembra che SigLevel = PackageRequired stia per diventare l'opzione standard per la verifica dei pacchetti ufficiali:
[core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

Inizializzare il portachiavi

Per inizializzare il portachiavi di pacman, usare il comando:

# pacman-key --init

Per questa inizializzazione è richiesta entropia. Per generarla, muovere il proprio mouse, premere caratteri a caso nella tastiera o avviare attività basata sul disco (ad esempio in un'altra console dare ls -R / o find / -name foo). Se il proprio sistema non ha già sufficiente entropia, questo potrebbe richiedere delle ore. Invece, generare in modo attivo entropia permette di completare il passaggio molto più velocemente.

La casualità creata viene utilizzate per impostae un nuovo portachiavi (/etc/pacman.d/gnupg) e la chiave GPG firmante principale del proprio sistema.

Affinché pacman comincia a controllare le firme dei pacchetti, si devono importare le chiavi degli sviluppatori nel proprio portachiavi. La prossima sezione spiegherà come fare.

Nota: Se si necessita di avviare pacman-key --init su SSH, installare il pacchetto haveged sulla macchina in questione, connettersi via SSH e dare:
# rc.d start haveged	
# pacman-key --init

Dopo che pacman-key è stato avviato con successo semplicemente si fermi haveged e si rimuova il pacchetto.

# pkill haveged
# pacman -Rs haveged

La soluzione haveged non è da usarsi solo su SSH: è anzi un modo veloce per raccogliere velocemente entropia. Se pacman-key --init sta richiedendo anni, si può provare questa soluzione.

Gestire il portachiavi

Verificare le cinque chiavi principali o master-key

L'installazione iniziale delle chiavi è ottenuta usando

# pacman-key --populate archlinux

È opportuno prendersi del tempo per verificare le Chiavi principali quando vengono mostrate, in quanto sono usate per co-firmare (e convalidare) tutte le altre chiavi degli sviluppatori.

Le chiavi PGP di solito sono troppo grandi (2048 bit o più) perché le persone possano lavorarci, quindi di solito sono spezzate per creare una fingerprint a 40 cifre esadecimali, che possono essere usate per controllare a mano che le due chiavi siano le medesime. Le ultime otto cifre sono note come "key ID" e sono una sorta di "nome" della key.

Aggiungere le chiavi degli sviluppatori

Le chiavi degli sviluppatori ufficiali e dei Trusted User vengono firmate dalle master-key, quindi all'utente non sarà necessario usare pacman-key per firmarle in locale. Nel caso in cui pacman incontri una key e non la riconosca, domanderà all'utente se desidera scaricarla dal keyserver impostato in /etc/pacman.d/gnupg/gpg.conf (o usasndo l'opzione --keyserver da riga di comando). Wikipedia mette a disposizione una lista di keyserver.

Una volta che la chiave di uno sviluppatore è stata scaricata, non sarà necessario farlo una seconda volta: quella key verrà usata per verificare ogni pacchetto da lui firmato.

Nota: Il pacchetto archlinux-keyring (una dipendenza di pacman) contiene le ultime chiavi. In ogni caso queste si possono aggiornare usando:
# pacman-key --refresh-keys
Facendo --refresh-keys, anche la propria chiave locale sarà controllata sul keyserver remoto, e si riceverà una notifica sul fatto che non è stata trovata. Non è nulla di cui preoccuparsi.

Aggiungere chiavi non ufficiali

Prima di tutto, ci si deve procurare l'ID dal proprietario della key. Dare da riga di comando:

# pacman-key -r <keyid>

per scaricarla da un keyserver. Assicurarsi di verificare la fingerprint, come si farebbe per una chiave principale, o con ogni altra chiave che si stia per convalidare. Dopo aver fatto ciò, sarà necessario firmare localmente questa key:

# pacman-key --lsign-key <keyid>

In questo modo si permetterà alla chiave di firmare i pacchetti.

Usare gpg

Se pacman-key non fosse sufficiente, è possibile amministrare il portachiavi di pacman da gpg così:

# gpg --homedir /etc/pacman.d/gnupg $OPTIONS

oppure

# env GNUPGHOME=/etc/pacman.d/gnupg gpg $OPTIONS

Risoluzione dei problemi

Impossibile importare le key

Alcuni ISP potrebbe aver bloccato la porta utilizzata per importare le chiavi PGP. Una soluzione è quella di utilizzare il keyserver del Massachusset's Institute of Technology che mette a disposizione una porta alternativa. Per farlo, modificare /etc/pacman.d/gnupg/gpg.conf, rimpiazzando la linea dei keyserver keyserver hkp://keys.gnupg.net con keyserver hkp://pgp.mit.edu:11371. Qualora ci si fosse dimenticati di avviare pacman-key --populate archlinux si potrebbero avere degli errori tentando di importare le chiavi.

Disabilitare il controllo delle firme

Warning: Usare con cautela. Disabilitare la firma dei pacchetti permette a pacman di installare automaticamente pacchetti inaffidabili.

Se non si è interessati alla firma dei pacchetti, è possibile disabilitare il controllo delle firme PGP completamente. È sufficiente modificare /etc/pacman.conf e scommentare la linea seguente sotto [options]:

SigLevel = Never

Inoltre, nei singoli repository, è necessario commentare ogni settaggio del SigLevel specifico, in quanto essi sovrascrivono la configurazione globale. Da ciò consegue l'assenza di controllo delle firme (il comportamento predefinito prima di pacman 4). Se si decide di farlo, non è necessario impostare un portachiavi con pacman-key. Sarà possibile modificare tale opzione, qualora si decida di abilitare la verifica dei pacchetti.

Resettare tutte le chiavi

Se si desidera rimuovere ogni chiave installata nel proprio sistema, basta eliminare da root la cartella /etc/pacman.d/gnupg e dare di nuovo il comando pacman-key --init per generare una nuova chiave catena personale. Quindi sarà possibile procedere ad aggiungere nuove chiavi come meglio si desidera.

Rimuovere pacchetti non aggiornati

Se gli stessi pacchetti continuano a fallire l'installazione o l'aggiornamento e si è certi di aver eseguito il procedimento d'installazione di pacman-key in maniera corretta, si provi a rimuovere questi pacchetti con rm /var/cache/pacman/pkg/pacchettocattivo*. In questo modo saranno riscaricati dal processo di aggiornamento.

Se si sta avendo l'errore error: failed to commit transaction (invalid or corrupted package), si guardino i file *.part (pacchetti parzialmente scaricati) in /var/cache/pacman/pkg e si rimuovano.


Fonti aggiuntive