pacman-key

De ArchwikiFR


pacman-key est un outil fourni avec pacman à partir de la version 4. Il permet à l'utilisateur de gérer la liste des clés de confiance.

Aperçu

  • Une clé PGP permet à chaque développeur de signer leurs paquets assurant ainsi leurs sources.
  • Une empreinte de clé (fingerprint) est une version courte de la clé.
    • Une fingerprint de la forme "6645 B0A8 C700 5E78 DB1D 7864 F99F FE0F EAE9 99BD" doit être compressée en "6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD" (espaces supprimés)
    • Le "0x" au début est optionnel.
  • Les servers de clés PGP contiennent les fichiers correspondant aux clés et vous permettent de rechercher une clé en se basant sur les fingerprints.
  • pgp.mit.edu est un serveur utilisé par une majorité de développeurs Archlinux.

Pour être sûr d'un paquet, il faut une chaîne de confiance des signatures depuis votre propre clé PGP jusqu'au paquet lui-même. Sous Arch, cela se décline de trois manières:

  • paquets personnalisés: votre propre paquet signé ou pas avec votre propre clé.
  • paquets non officiels: un développeur a fait le paquet et l'a signé. Vous utilisez votre propre clé pour signer celle du développeur.
  • paquets officiels: un développeur a fait le paquet et l'a signé. La clé du développeur a été signée par 3 clés principales d'Arch Linux (master keys). Vous utilisez votre clé pour signer les clés principales et en leur faisant confiance, ils vous garantissent l'authenticité des clés des développeurs.

Configuration

Initialisation du trousseau

Il faut d'abord créer une clé et un dossier de stockage:

pacman-key --init
Note: Cette étape peut vous indiquer que le système a besoin de davantage d'entropie pour achever le processus (en vue de récupèrer des éléments aléatoires pour générer votre clé): il vous suffit de bouger la souris, taper des touches du clavier, lancer des processus en parallèle...

Une alternative peut constituer à installer haveged ou rng-tools et de lancer le service correspondant avant de lancer pacman-key --init:

systemctl start haveged
systemctl enable haveged
pacman-key --init

Niveau de vérification des signatures

La gestion des signatures se configure à l'aide de la directive SigLevel dans /etc/pacman.conf. Consulter man pacman pour plus de détails.

La directive peut se configurer soit en globale en la plaçant dans la section [options], soit par dépôt en la plaçant dans la section du dépôt à configurer.

La syntaxe est (man pacman.conf):

SigLevel = <quand vérifier> [à qui faire confiance]

Par exemple, pour désactiver la vérification:

SigLevel = Never
Attention: L'option Never est fortement déconseillée. Désactiver la vérification autorisera pacman à installer automatiquement tout paquet !
Important: Les différentes options de vérification demandent d'avoir importé la liste des clés de confiance.

L'option par défaut vérifie les signatures lorsqu'elles existent (l'absence de signature n'est pas considérée comme une erreur):

SigLevel = Optional TrustedOnly

Si vous voulez faire confiance à toute clé rencontrée:

SigLevel = Optional TrustAll
Attention: L'option TrustAll existe uniquement à des fins de debug en accordant la confiance à des clés non vérifiées. Pour les dépôts officiels, vous devriez utiliser TrustedOnly.

Pour rejeter tout paquet ou dépôt non signé:

SigLevel = Required TrustedOnly
Note: Pour l'option Required, la signature des bases de données étant encore à mettre en place à l'heure actuelle, il vous faudra utiliser pour installer de nouveaux paquets:
SigLevel = Required DatabaseOptional TrustedOnly

Pour le moment, attention également car les paquets plus anciens ne peuvent être installés avec cette option car ils ne sont pas signés.

Note: La configuration actuelle de pacman pour les dépôts officiels nécessite la signature valide d'un paquet (tout paquet invalide ou non signé ne peut donc être installé):
[core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

Gestion du trousseau

Clés principales

Il en existe 5 pour Arch Linux qui sont utilisés pour signer les clés des développeurs et des utilisateurs de confiance (Trusted Users, TUs). Ces clés devraient faire partie de votre trousseau car elles permettront de vérifier l'authenticité des clés des différents paquets officiels.

Installation automatique

Au moyen de la commande suivante, vous n'aurez qu'à vérifier si les empreintes des clés affichées sont correctes (voir cette page) et si oui, d'accepter de signer les différentes clés au moyen de la vôtre (le niveau de confiance est établi automatiquement par rapport à l'installation manuelle):

pacman-key --populate archlinux

Installation manuelle

Pour les installer, il faut récupèrer leurs identifiants (indiqués par la colonne «Master Key») depuis cette page:

pacman-key -r <keyid> <keyid> <keyid> <keyid> <keyid>

Vous devrez ensuite signer localement ces clés et modifier leur niveau de confiance au moins à «marginal»:

pacman-key --edit-key <keyid> <keyid> <keyid> <keyid> <keyid>
Important: Avant de signer ou d'accorder votre confiance à une clé, vous devez vérifier son empreinte par vous-même. La plus sûre des méthodes est de ne pas passer par un ordinateur, mais, par exemple, «de payer une bière à Allan McRae et de lui demander en personne la valeur de l'empreinte de sa clé publique» (tiré du wiki anglophone ^^). Dans la pratique, il est acceptable de vérifier cette empreinte par différentes sources ( la page d'où vous avez retiré les "master keys", le propre blog d'Allan, etc. ).
gpg> lsign
...
 Empreinte de la clé principale: ...
...
Signer réellement ? (o/N) o
gpg> trust
...
  1 = ne sais pas ou ne dirai pas
  2 = je ne fais PAS confiance
  3 = je crois marginalement
  4 = je fais entièrement confiance
  5 = je donne une confiance ultime
  m = retour au menu principal
Votre decision? 3
gpg> save

Ceci sera à répéter pour chaque clé principale. Puis :

gpg> q
Enregistrer les changements? (o/N) o

Clés des développeurs et utilisateurs de confiance

La page des développeurs contient les empreintes des clés des développeurs et la page des utilisateurs de confiance celles des TUs.

Note: En installant les clés principales, pacman récupérera et vérifiera au fur et à mesure celles des développeurs et utilisateurs de confiance d'Arch. Nul besoin de les ajouter manuellement. En outre, il est inutile de signer ces clefs ou de leur accorder un niveau de confiance (cela passe par les clés principales et la votre).

Clés non officielles

Vous pourrez être amené à ajouter des clés non officielles à votre trousseau (par exemple pour un dépôt non officiel). Vous devrez donc le faire manuellement via pacman-key (en suivant les étapes de l'installation manuelle d'une clé principale: récupérer la clé par un serveur ou manuellement, vérifier son empreinte, la signer et lui accorder un niveau de confiance suffisant).

La première chose à faire est de récupérer la « keyid » d'une personne.

Note: Si vous ne connaissez pas la « keyid » d'une personne (par exemple, le mainteneur du dépôt catalyst) tout en connaissant son email (il devrait être affiché dans le PKGBUILD, vous pouvez la chercher en utilisant cette commande:
 gpg --search-keys <email>

Puis pour récupérer la clé depuis un serveur de clé (keyserver) :

 pacman-key -r <keyid>
Astuce: Pour rapatrier une clé depuis un serveur autre que celui par défaut :
pacman-key -r <fingerprint> --keyserver pgp.mit.edu

Vous pouvez également modifier le serveur d'où importer les clés en modifiant le fichier /etc/pacman.d/gnupg/gpg.conf :

keyserver hkp://pgp.mit.edu
Astuce: Vous pouvez aussi rajouter une clé en téléchargeant son fichier puis:
pacman-key -a fichier_de_la_cle

Pensez bien à vérifier l'empreinte de la clé, de la même façon qu'avec une « master key ». Après avoir vérifié l'empreinte, il est nécessaire de signer localement la clé :

 pacman-key --lsign-key <keyid>

Maintenant la clé peut être utilisée pour installer des paquets venant de ce dépôt non officiel.

Lister les clés du trousseau

Pour lister toutes les clés à disposition:

pacman-key -l

Maintenance du trousseau

archlinux-keyring contient les dernières signatures en date.

Par conséquent, il est possible de rencontrer le type d'erreur suivante si un paquet a été signé alors qu'une mise à jour archlinux-keyring est également disponible:

Erreur : perl-anyevent: signature from "Justin Davis (juster) <jrcd83@gmail.com>" is unknown trust
Erreur : la validation de la transaction a échoué (paquet invalide ou corrompu)
Des erreurs se sont produites, aucun paquet n'a été mis à jour.

Dès lors, vous devez rafraîchir directement votre base de données des clés locales par rapport au serveur distant, avec:

pacman-key --refresh-keys

Puis de tenter de réinstaller le paquet récalcitrant.

Attention: Cette erreur peut aussi provenir d'un mauvais réglage de l'horloge de votre système.

Remise à zéro

Si, pour une raison ou une autre, vous désirez supprimer toutes les clés installées et repartir sur du neuf:

rm -rf /etc/pacman.d/gnupg
pacman-key --init

Liens