56 votes

Quelles commandes (exactement) devraient remplacer l'apt-key déprécié ?

En configurant des clés pour un dépôt local sur une nouvelle machine virtuelle ubuntu 20.10, j'ai reçu un message indiquant qu'apt-key add était déprécié et que je devais lire le apt-key (8) page de manuel. Le site apt-key (8) La page de manuel est une collection de mots attachés ensemble, mais si elle contient des informations, je ne peux pas l'effacer. Quelqu'un peut-il me dire ce que je dois taper exactement sur mon terminal à la place de :

apt-key add name-of-file

Apparemment, la commande fonctionne toujours après avoir klaxonné, j'ai donc pu continuer, mais j'aimerais savoir ce que je devrai faire à l'avenir.

88voto

Askeli Points 959

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)" :
    • file <keyfile>.<ext>
  • 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 :

13voto

Ugo Delle Donne Points 154

Je suis tombé sur le même problème et heureusement, d'autres questions m'ont éclairé. Dans mon exemple, j'essayais d'ajouter un dépôt teamviewer à un Kali linux récent et j'étais bloqué par la vérification de la clé.

Je suis certain qu'il existe un moyen plus élégant de procéder, mais les étapes suivantes m'ont permis de résoudre le problème :

  1. Téléchargez la clé correspondante

    wget -O - https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc > ~/teamviewer.key

  2. Vérifier le type de fichier

    file ~/teamviewer.key

    il devrait l'être Bloc de clés publiques PGP Clé publique (ancienne)

  3. Créer un porte-clés

    gpg --no-default-keyring --keyring ./teamviewer_keyring.gpg --import teamviewer.key

  4. Ce fichier n'est toujours pas une clé valide qui peut être ajoutée à la base de données de l'UE. /etc/apt/trusted.gpg.d/ puisqu'il s'agit d'un trousseau de clés, mais à partir de ce trousseau, nous pouvons extraire la clé avec

    gpg --no-default-keyring --keyring ./teamviewer_keyring.gpg --export > ./teamviewer.gpg

  5. Ce fichier est la clé que vous voulez déplacer vers le dossier des clés de confiance.

    sudo mv ./teamviewer.gpg /etc/apt/trusted.gpg.d/

heureux sudo apt update ! !!

7voto

zachsmthsn Points 71

La raison de cette dépréciation est que l'utilisation de l'option apt-key add ajoute simplement la clé gpg au trousseau global APT de confiance. C'est similaire à la méthode préférée d'ajout de la clé gpg au trousseau global de confiance APT. local_repo.list a /etc/apt/sources.list.d/ au lieu d'utiliser add-apt-repository dep /link/to/repo version qui ajoute le message au fichier global sources.list archivo.

Je pense que c'est un peu plus difficile à comprendre que l'utilisation du dossier .d, mais essentiellement nous voulons obtenir la clé gpg dans un fichier keyring autonome, puis pointer vers ce fichier keyring dans la liste des sources. L'emplacement par défaut du fichier keyring est /usr/share/keyrings et il peut s'agir d'un fichier .asc ou .gpg. Je ne suis pas sûr de la différence, mais je sais que les fichiers de trousseau de clés globaux sont des fichiers binaires, pas en clair.

Par exemple :

L'utilisation de noms génériques peut parfois être un peu difficile à comprendre, voici donc un exemple d'installation de mongoDB :

Récupérez la clé gpg de MongoDB et ajoutez-la à un nouveau fichier keyring.

curl https://www.mongodb.org/static/pgp/server-4.2.asc | sudo tee -a /usr/share/keyrings/buster-mongodb-org-4_2.asc

Ajouter une entrée source pour apt, pointant vers ce nouveau trousseau de clés

echo "deb [signed-by=/usr/share/keyrings/buster-mongodb-org-4_2.asc] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main

Installer mongodb à partir de ce dépôt nouvellement ajouté

sudo apt install -y mongodb-org

Référence

C'est encore nouveau pour moi, mais la plupart de ce que je sais vient de cette excellente réponse dans le SE unix

3voto

Artur Meinild Points 5704

J'ai créé une Shell Shell qui peut télécharger et installer des clés à utiliser avec [signed-by=] déclaration dans sources.list .

Il est disponible sur github.com/ameinild/add-apt-key .

POSIX script pour l'installation de clés APT

Aide générale

Ce script aidera à l'installation de clés PGP pour les dépôts APT.

Ce script supporte jusqu'à 2 arguments :

  • Le 1er argument est le fichier d'entrée. Il peut être soit :
    • Une URL - la clé sera téléchargée dans le chemin actuel (en utilisant wget ou curl).
    • Un nom de fichier - lit une clé existante dans le chemin actuel
    • Un chemin et un nom de fichier - lit une clé existante dans le chemin donné
  • Le deuxième argument est le chemin de sortie de la clé et le nom de la sortie. Cela peut être soit :
    • Only filename - le chemin de sortie est défini dans la configuration, enregistré sous le nom de fichier donné.
    • Un chemin et un nom de fichier - le chemin de sortie est donné ici, enregistré sous le nom de fichier donné.
    • Seulement un chemin (se terminant par /) - le chemin de sortie est donné ici, le nom de fichier est pris à partir de la clé existante.
    • Empty - le chemin de sortie est défini dans la configuration, le nom du fichier est repris de la clé existante.

Ce script a un fichier de configuration /usr/local/etc/add-apt-key.conf où le les variables suivantes peuvent être définies :

  • keypath : chemin pour stocker la clé convertie - la valeur par défaut est /usr/share/keyrings
  • verbosity si réglé sur Oui - affiche une sortie supplémentaire
  • removetmp si réglé sur Oui - supprimer le fichier d'entrée (non converti)

Exemple 1 : ( PWD=/root )

sudo add-apt-key https://mariadb.org/mariadb_release_signing_key.asc /usr/local/share/keyrings/

Télécharger la clé dans /root convertissez-le et stockez-le en tant que /usr/local/share/keyrings/mariadb_release_signing_key.gpg

Exemple 2 : ( PWD=/home/user )

sudo add-apt-key /root/mariadb_release_signing_key.asc /usr/local/share/keyrings/mariadbkey

Utilisera la clé existante dans /root convertissez-le et stockez-le en tant que /usr/local/share/keyrings/mariadbkey.gpg

Exemple 3 : ( PWD=/home/user )

sudo add-apt-key mariadb_release_signing_key.asc mariadbkey

Utilisera la clé existante dans /home/user convertissez-le et stockez-le en tant que /usr/share/keyrings/mariadbkey.gpg

Après l'installation de la clé PGP, il est également possible d'ajouter la clé et le référentiel à l'adresse suivante /etc/apt/sources.list

  • Le choix d'ajouter cette option sera présenté dans le script comme première option de saisie.
  • Si Oui est choisi, la chaîne du référentiel doit être collée comme deuxième option de saisie

Ceci complète l'installation de la clé en ajoutant la ligne de dépôt correspondante à /etc/apt/sources.list

Installation

Installez en exécutant les commandes suivantes :

sudo curl -L https://raw.githubusercontent.com/ameinild/add-apt-key/master/add-apt-key -o /usr/local/bin/add-apt-key
sudo curl -L https://raw.githubusercontent.com/ameinild/add-apt-key/master/add-apt-key.conf -o /usr/local/etc/add-apt-key.conf
sudo chmod a+rx /usr/local/bin/add-apt-key

1voto

kynan Points 2111

Clés à utiliser par apt sont stockées dans /etc/apt/trusted.gpg.d/ . apt-key a géré ces porte-clés pour vous, mais maintenant qu'il est déprécié, vous devez choisir un nom de fichier approprié <KEYRING> pour le porte-clés vous-même.

Si vous avez déjà la clé dans un fichier local <FILE> courir

gpg --no-default-keyring --keyring=gnupg-ring:/etc/apt/trusted.gpg.d/<KEYRING>.gpg --import <FILE>

Pour lire directement la clé à partir de <URL> courir

curl -sSfL <URL> | gpg --no-default-keyring --keyring=gnupg-ring:/etc/apt/trusted.gpg.d/<KEYRING>.gpg --import

Remarque : le préfixe gnupg-ring: avant le nom du keyring est nécessaire pour créer le keyring dans l'application apt compatible avec le format v4 (ancien), plutôt que le format v1 (plus récent) de la boîte à clés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X