Vous devez savoir por qué apt-key add
est déprécié
Toutes les réponses données jusqu'à présent tournent autour de la symptôme ("N'utilisez pas apt-key add
") mais n'abordent pas la problème réel qui a conduit à apt-key add
étant déprécié. Le problème ne consiste pas à ajouter une clé à un grand fichier porte-clés. etc/apt/trusted.gpg
plutôt que de placer manuellement les fichiers de trousseau de clés à clé unique dans le répertoire /etc/apt/trusted.gpg.d/
. Ces deux choses sont équivalentes, et faire l'une ou l'autre est un énorme risque pour la sécurité.
Le problème est que toute clé que vous ajoutez à soit de ce qui précède fait l'objet d'une confiance totale et inconditionnelle de la part d'Apt. Cela signifie que lors de l'installation d'un paquet à partir de n'importe quel dépôt (y compris les dépôts officiels de la distribution), apt acceptera volontiers que le paquet soit signé par tout de ces clés de confiance (que la clé appartienne ou non au dépôt d'où provient le paquet). Cela affaiblit l'assurance fournie par le mécanisme de signature des paquets contre l'injection de paquets malveillants dans le réseau officiel des miroirs Ubuntu.
Ce que nous voulons faire à la place, c'est configurer apt pour qu'il accepte les signatures d'un dépôt tiers uniquement pour les paquets installés à partir de ce dépôt - pas de signature croisée. Les règles d'épinglage par défaut d'Apt donnent une priorité plus élevée aux dépôts officiels de la distro, ce qui (en conjonction avec une bonne gestion des clés) offre une certaine protection contre les dépôts tiers qui remplacent les paquets fournis par la distro. (Au moins, je 泛かべる qui est par défaut. Vous pouvez utiliser apt-cache policy
pour inspecter les priorités actuelles des épingles, et si nécessaire, vous pouvez ajuster l'épinglage en fonction de origin
pour obtenir cet effet. Voir man apt_preferences
pour plus de détails).
Les instructions données dans la réponse d'Ugo Delle Donne pour convertir la clé au format (ancien) keyring v4 qu'apt accepte sont correctes et utiles, mais ce n'est que la moitié de la solution. Je vais les réitérer ici (en les nettoyant légèrement) afin que toutes les étapes soient regroupées en un seul endroit :
- Téléchargez la clé :
-
wget https://host.domain.tld/path/to/<keyfile>.<ext>
(Pas besoin de -O
o >
; wget
enregistre par défaut le fichier dans votre répertoire courant avec le même nom de fichier qu'il a sur le serveur).
- Vérifiez que le type de fichier est "PGP public key block Public-Key (old)" :
-
gpg
prend en charge un certain nombre de formats de clés. Si votre clé est dans un format différent, convertissez-la en l'important dans un trousseau temporaire, puis en l'exportant à nouveau :
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import <keyfile>.<ext>
gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output <your-keyfile-name>.gpg
rm temp-keyring.gpg
Maintenant que vous avez votre clé convertie, no l'ajouter à apt
en le copiant dans le répertoire de confiance de l'utilisateur. /etc/apt/trusted.gpg.d/
. Au lieu de cela, mettez-le à un endroit comme /usr/local/share/keyrings/
. (Vous devrez créer ce keyrings
d'abord). Il n'y a rien de spécial à propos de cet emplacement, c'est juste une convention que /usr/local
est pour les choses qui sont spécifiques à cette machine, share
parce que ce n'est pas un binaire ou une bibliothèque ou spécifique à un utilisateur donné, et keyrings
est juste un nom descriptif.
A ce stade, rien n'a changé et apt
ne sait pas que la clé existe. La dernière étape consiste à modifier le .list
pour le référentiel afin de dire à apt où trouver la clé pour ce repo spécifique .
- Modifier le fichier
/etc/apt/sources.list.d/<example>.list
et entre les deux deb
et l'url, ajoutez [signed-by=/usr/local/share/keyrings/<your-keyfile-name>.gpg]
Désormais, apt acceptera la signature de cette clé pour tous les paquets de ce dépôt et seulement ce repo.
Notas:
- Si vous avez déjà des fichiers keyring dans
/etc/apt/trusted.gpg.d/
vous pouvez copia déplacer de les /usr/local/share/keyrings/
tel quel, et ensuite mettre à jour tous les éléments correspondants .list
afin que chacun d'entre eux ait un signed-by
pointant vers sa propre clé.
- Si vous avez déjà des clés dans le
/etc/apt/trusted.gpg
au-delà des clés officielles du dépôt, cette réponse détaille les étapes pour les localiser et les supprimer. Vous pouvez ensuite suivre les mêmes étapes que ci-dessus pour les configurer de manière plus sûre. (Il est également possible de les exporter de ce porte-clés, mais les étapes exactes sont laissées comme un exercice pour le lecteur).
- Pour importer la clé d'un repo à partir d'un serveur de clés à un fichier autonome :
gpg --no-default-keyring --keyring <output-file-name>.gpg --keyserver <some.keyserver.uri> --recv-keys <fingerprint>
- Cela devrait vous donner une clé qu'apt acceptera sans conversion.
- Apt est encore très confiant, et un repo malveillant ou compromis peut contourner cette mesure facilement car les paquets peuvent actuellement exécuter un code arbitraire Shell en tant que root dans leurs Shell d'installation. Fermer un vecteur d'attaque ne fait pas de mal, cependant, et des progrès sont (lentement) réalisés sur d'autres fronts.
- En option, vous pouvez passer à la nouvelle version plus verbeuse de
Deb822
en utilisant le format individuel .sources
au lieu de .list
des fichiers. C'est plus de travail, mais personnellement je trouve le résultat beaucoup plus lisible.
Sources :