Comment corriger l’avertissement “apt-key is deprecated”

Comment corriger l'avertissement “apt-key is deprecated”

Dans cet article, je vous expose la méthode recommandée pour ajouter les clés de signatures de vos dépôts tiers sur Debian, Ubuntu et les distributions dérivées de ces dernières (comme Linux Mint). Ainsi, vous n’aurez pas/plus d’avertissements sur l’obsolescence de apt-key du style :

  • apt-key is deprecated lors de l’utilisation de la commande apt-key
  • ou W: http://repository.example.com/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. lors de la mise à jour, en ligne de commande, de la liste de vos paquets.

Introduction

Pourquoi apt-key devient obsolète ?

Si vous faites un petit tour dans le manuel de apt-key (commande man apt-key), vous lirez en anglais que :

L’utilisation de apt-key est obsolète […].

apt-key sera disponible pour la dernière fois dans Debian 11 et Ubuntu 22.04

Manuel de apt-key

L’explication à ce changement peut se trouver sur le wiki Debian (page en anglais). Mais en gros :

La commande apt-key ajoute les clés dans /etc/apt/trusted.gpg ou /etc/apt/trusted.gpg.d. À ces emplacements, les clés deviennent approuvées par APT pour tous les dépôts configurés sur le système qui n’ont pas d’option signed-by (voir plus bas), même les dépôts officiels de Debian, Ubuntu, Linux Mint, etc. Et, ainsi, tout dépôt non officiel pourrait remplacer n’importe quel paquet sur le système, ce qui crée un risque pour la sécurité du système…

De plus, bien que le manuel apt-key indique d’utiliser /etc/apt/trusted.gpg.d, Debian le déconseille pour les raisons expliquées ci-dessus. Il recommande d’utiliser à la place /usr/share/keyrings/. Certaines documentations suggèrent l’utilisation de l’emplacement /etc/apt/keyrings/, mais ce dernier n’existe par défaut sur Debian et Ubuntu.

Donc, pour le moment, apt-key fonctionne toujours. Vous n’avez que des avertissements (pas des erreurs) que vous pouvez ignorer. Toutefois, comme le changement est proche, autant commencer à utiliser une meilleure méthode recommandée par Debian. Celle je vous expose ci-dessous…

Mais, soyons honnête, nous passons d’une méthode simple à une plus complexe qui pourrait en dissuader plus d’un…

Les fichiers de clé de signature de dépôts

Ils permettent au système de s’assurer que le dépôt utilisé est sûr. Ils peuvent avoir différentes extensions (.gpg, .asc, .key, …) et être aux formats ASCII-Armor ou binaire.

Un fichier de clé ASCII-Armor utilise un format texte lisible dans un éditeur. Si vous l’ouvrez, le fichier commence par :

-----BEGIN PGP PUBLIC KEY BLOCK-----

Alors qu’une clé qui ne l’est pas est dans un format binaire illisible.

Le format d’un fichier clé peut aussi se vérifier avec la commande :

file nom_de_fichier_cle.ext

Si, en retour, vous avez : nom_de_fichier_cle.ext: PGP public key block Public-Key (old) la clé est au format ASCII-Armor.

La commande gpg --dearmor permet de convertir le fichier au format binaire.

Les fichiers de clé de signature d’un dépôt pour l’import ne doivent pas être au format ASCII-Armor.

Ajouter un dépôt et importer sa clé de signature sans utiliser apt-key

Les principales étapes sont :

  1. Récupérer/télécharger le fichier clé
  2. Convertir en binaire si le fichier clé est au format ASCII-Armor
  3. Copier la clé dans /usr/share/keyrings/ avec un nom de fichier du style <un-nom>-archive-keyring.gpg (<un-nom> à adapter en le remplaçant, par exemple, par le nom du dépôt)
  4. Ajouter ou modifier le fichier .list du dépôt correspondant avec [signed-by=/usr/share/keyrings/<un-nom>-archive-keyring.gpg] entre le deb de début de ligne et l’URL du dépôt et sauvegarder

Importer la clé de signature du dépôt sans apt-key

Une fois format de la clé connu, vous pouvez faire les 3 premières étapes avec une seule ligne de commande.

  • Pour un fichier de clé binaire (non ASCII-Armor), la commande pourra être du style :
wget -O /usr/share/keyrings/<un-nom>-archive-keyring.gpg https://depot.example.net/debian/<nom-fichier-cle>.gpg

Exemple pour la clé (non ASCII-Armor) du dépôt de Mkvtoolnix :

sudo wget -O /usr/share/keyrings/mkvtoolnix-archive-keyring.gpg https://mkvtoolnix.download/gpg-pub-moritzbunkus.gpg
  • Pour un fichier de clé ASCII-Armor, utilisez une commande du style :
wget -O- https://depot.example.net/debian/<nom-fichier-cle>.<ext> | sudo gpg --dearmor --yes --output /usr/share/keyrings/<un-nom>-archive-keyring.gpg

Exemple pour la clé du dépôt de VirtualBox :

wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor --yes --output /usr/share/keyrings/virtualbox-archive-keyring.gpg

Ajouter le dépôt correspondant à la clé importée

Pour ajouter le dépôt, vous pouvez utiliser avec une ligne de commande du style :

echo "deb [signed-by=/usr/share/keyrings/<un-nom>-archive-keyring.gpg] URL_du_depot distribution composant" | sudo tee /etc/apt/sources.list.d/<nom-depot>.list

Par exemple pour VirtualBox sur Ubuntu 22.04 :

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox-2016-archive-keyring.gpg] https://download.virtualbox.org/virtualbox/debian jammy contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

Modifier un dépôt déjà ajouté

Si vous avez déjà ajouté le dépôt à la liste de vos sources, ouvrez le fichier correspondant avec des droits administrateur (sudo) pour pouvoir le modifier. Exemple avec nano :

sudo nano /etc/apt/source.list.d/virtualbox.list

Et modifier la ligne pour y ajouter signed-by suivi de l’emplacement du fichier clé. Par exemple :

deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox-archive-keyring.gpg] https://download.virtualbox.org/virtualbox/debian jammy contrib

Si vous ne l’avez pas encore ajouté, vous pouvez le faire avec une ligne de commande du style :

Le cas des PPA (Ubuntu, Linux Mint, etc.)

Sur Ubuntu 22.04, l’ajout d’un PPA importe sa clé directement de /etc/apt/trusted.gpg.d ce qui évite d’avoir l’avertissement, mais la met à un emplacement non recommandé.

Sur Linux Mint 21.x, la clé est encore importée dans le fichier /etc/apt/trusted.gpg ce qui affichera un avertissement si vous faites de mises à jour du cache APT depuis un terminal.

Si vous les utilisez, pour ne pas/plus avoir d’avertissement sur l’obsolescence de apt-key, voici une méthode :

Ouvrez un terminal et faites :

sudo apt-key list

Cela vous listera les clés présentes dans trusted.gpg ou /etc/apt/trusted.gpg.d. Suivant votre système et votre configuration, elle sera plus ou moins longue.

Chaque clé de signature sera listée avec « pub rsa<un-nombre> <une-date> » suivi d’une ligne avec une empreinte hexadécimale à 40 chiffres.

Linux Mint 21 apt-key list avec PPA libreoffice
apt-key list avec PPA libreoffice sur Linux Mint 21

Vous pouvez aussi trouver cette empreinte sur la page web du PPA :

Clé de signature sur la page web d'un PPA

Notez les 8 derniers chiffres de chaque empreinte sans garder l’espace. Par exemple, pour LibreOffice, les chiffre à noter sont 1378B444.

Ensuite, extrayez les clés vers /usr/share/keyrings/ avec la commande :

sudo apt-key export <8_dernier_digit_de_empreinte> | sudo gpg --dearmour -o /usr/share/keyrings/<nom-depot>-archive.keyring.gpg

Par exemple pour LibreOffice, faites :

sudo apt-key export 1378B444 | sudo gpg --dearmour -o /usr/share/keyrings/libreoffice-archive.keyring.gpg

Puis dans le dossier /etc/apt/sources.list.d modifiez les fichiers .list des PPA correspondants pour y ajouter entre le deb de début de ligne et l’URL : [signed-by=/usr/share/keyrings/<un-nom>-archive.keyring.gpg].

Par exemple pour LibreOffice :

deb [signed-by=/usr/share/keyrings/libreoffice-archive.keyring.gpg] https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu/ jammy main

Pour finir, vous pouvez supprimer la clé sauvegarder dans trusted.gpg ou /etc/apt/trusted.gpg.d avec :

sudo apt-key del <8_dernier_digit_de_empreinte>

Par exemple, pour effacer la clé du PPA de LibreOffice, faites :

sudo apt-key del 1378B444

Pour aller plus loin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.