pacman (Français)/Package signing (Français)
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
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
Never
est fortement déconseillée. Désactiver la vérification autorisera pacman à installer automatiquement tout paquet !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
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
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.
[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>
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.
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.
gpg --search-keys <email>
Puis pour récupérer la clé depuis un serveur de clé (keyserver) :
pacman-key -r <keyid>
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
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.
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
- Proposition de signature de paquet pour pacman (en)
- Signature de paquet avec pacman (en)
- Blog d'Allan McRae (en): [1], [2], [3] et [4]