Correction de l’erreur de dépréciation d’apt-key sous Linux

Ce matin, de retour de mini-vacances, j’ai décidé de courir apt update
et apt upgrade
à partir de la ligne de commande juste pour voir s’il y avait eu des mises à jour pendant que j’étais hors ligne. Après avoir émis la commande de mise à jour, quelque chose ne semblait pas tout à fait correct ; Je voyais des messages du type :
W: https://updates.example.com/desktop/apt/dists/xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Certes, ce n’est qu’un avertissement, mais il y a toujours ce mot effrayant, la dépréciation, qui signifie généralement qu’il va bientôt disparaître. Alors j’ai pensé que je devrais jeter un œil. Sur la base de ce que j’ai trouvé, j’ai pensé que mon expérience mériterait d’être partagée.
Il s’avère que j’ai des configurations plus anciennes pour certains référentiels, des artefacts de processus d’installation de “l’époque”, qui nécessitaient un ajustement. Prenant mon invite du message d’avertissement, j’ai couru man apt-key
à la ligne de commande, qui a fourni plusieurs informations intéressantes. Vers le début de la page de manuel :
apt-key is used to manage the list of keys used by apt to authenticate packages. Packages which have been authenticated using these keys are considered trusted.
Use of apt-key is deprecated, except for the use of apt-key del in maintainer scripts to remove existing keys from the main keyring. If such usage of apt-key is desired, the additional installation of the GNU Privacy Guard suite (packaged in gnupg) is required.
apt-key(8) will last be available in Debian 11 and Ubuntu 22.04.
Le dernier disponible dans “Debian 11 et Ubuntu 22.04” est à peu près à l’heure actuelle pour moi. Il est temps de régler ça !
Contents
Correction de l’erreur d’obsolescence apt-key
Plus loin dans la page de manuel, il y a la section d’obsolescence mentionnée dans l’avertissement de la mise à jour d’apt :
DEPRECATION
Except for using apt-key del in maintainer scripts, the use of apt-key is deprecated. This section shows how to replace the existing use of apt-key.
If your existing use of apt-key add looks like this:wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -
Then you can directly replace this with (though note the recommendation below):
wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc
Make sure to use the "asc" extension for ASCII armored keys and the "gpg" extension for the binary OpenPGP format (also known as "GPG key public ring"). The binary OpenPGP format works for all apt versions, while the ASCII armored format works for apt version >= 1.4.
Recommended: Instead of placing keys into the /etc/apt/trusted.gpg.d directory, you can place them anywhere on your filesystem by using the Signed-By option in your sources.list and pointing to the filename of the key. See sources.list(5) for details. Since APT 2.4, /etc/apt/keyrings is provided as the recommended location for keys not managed by packages. When using a deb822-style sources.list, and with apt version >= 2.4, the Signed-By option can also be used to include the full ASCII armored keyring directly in the sources.list without an additional file.
Si, comme moi, vous avez ajouté des clés provenant d’éléments non référentiels avec apt-key
voici les étapes de la transition :
- Déterminez quelles clés sont dans
apt-key keyring /etc/apt/trusted.gpg
- Retirez-les
- Trouver et installer des remplacements dans
/etc/apt/trusted.gpg.d/
ou dans/etc/apt/keyrings/
1. Trouver d’anciennes clés
La commande apt-key list
montre les clés dans /etc/apt/trusted.gpg
:
$ sudo apt-key list
[sudo] password:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2017-04-05 [SC]
DBE4 6B52 81D0 C816 F630 E889 D980 A174 57F6 FB86
uid [ unknown] Example <support@example.com>
sub rsa4096 2017-04-05 [E]pub rsa4096 2016-04-12 [SC]
EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796
uid [ unknown] Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
sub rsa4096 2021-10-26 [S] [expires: 2024-10-25]
[...]
Sont également affichées par la suite les clés contenues dans les fichiers du /etc/apt/trusted.gpg.d
dossier.
[ Related read How to import your existing SSH keys into your GPG key ]
2. Retirer les anciennes clés
Le groupe de quatuors de chiffres hexadécimaux, par exemple DBEA 6B52...FB86
est l’identifiant nécessaire pour supprimer les clés indésirables :
$ sudo apt-key del "DBEA 6B52 81D0 C816 F630 E889 D980 A174 57F6 FB86"
Cela supprime la clé Example. Ce n’est littéralement qu’un exemple, et en réalité, vous vous débarrasseriez des clés qui existent réellement. Par exemple, j’ai exécuté la même commande pour chacune des clés réelles de mon système, y compris les clés pour Google, Signal et Ascensio. Les clés de votre système varient en fonction de ce que vous avez installé.
3. Ajout de clés
L’obtention des clés de remplacement dépend de l’application. Par exemple, Open Whisper propose sa clé et une explication de ce qu’il faut faire pour l’installer, ce que j’ai décidé de ne pas suivre car il met la clé dans /usr/share/keyrings
. A la place, j’ai fait ceci :
$ wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
$ sudo mv signal-desktop-keyring.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/signal-desktop-keyring.gpg
$ sudo chmod ugo+r /etc/apt/trusted.gpg.d/signal-desktop-keyring.gpg
$ sudo chmod go-w /etc/apt/trusted.gpg.d/signal-desktop-keyring.gpg
Ascencio propose également des instructions pour installer OnlyOffice qui incluent la gestion de la clé GPG. Encore une fois, j’ai modifié leurs instructions en fonction de mes besoins:
$ gpg --no-default-keyring --keyring gnupg-ring:~/onlyoffice.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
$ sudo mv onlyoffice.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/onlyoffice.gpg
$ sudo chmod ugo+r /etc/apt/trusted.gpg.d/onlyoffice.gpg
$ sudo chmod go-w /etc/apt/trusted.gpg.d/onlyoffice.gpg
Quant à la clé Google, elle est gérée (correctement, semble-t-il) via le .deb
package, et donc une simple réinstallation avec dpkg -i
était tout ce qu’il fallait. Finalement, j’ai fini par ça :
$ ls -l /etc/apt/trusted.gpg.d
total 24
-rw-r--r-- 1 root root 7821 Sep 2 10:55 google-chrome.gpg
-rw-r--r-- 1 root root 2279 Sep 2 08:27 onlyoffice.gpg
-rw-r--r-- 1 root root 2223 Sep 2 08:02 signal-desktop-keyring.gpg
-rw-r--r-- 1 root root 2794 Mar 26 2021 ubuntu-keyring-2012-cdimage.gpg
-rw-r--r-- 1 root root 1733 Mar 26 2021 ubuntu-keyring-2018-archive.gpg
Clés expirées
La dernière clé de problème que j’ai eue provenait d’une installation obsolète de QGIS. La clé avait expiré et je l’avais configurée pour qu’elle soit gérée par apt-key
. J’ai fini par suivre leurs instructions à la lettre, tant pour l’installation d’une nouvelle clé dans /etc/apt/keryings
et leur format suggéré pour le /etc/apt/sources.list.d/qgis.sources
paramétrage d’installation.
[ Download the Linux cheat sheets for apt or dnf ]
Maintenance du système Linux
Maintenant tu peux courir apt update
sans avertissements ni erreurs liés aux configurations de clé obsolètes. Nous apt
les utilisateurs doivent juste se rappeler d’ajuster les anciennes instructions d’installation qui dépendent de apt-key
. À la place d’utiliser apt-key
vous devez plutôt installer une clé pour /etc/apt/trusted.gpg.d/
ou /etc/apt/keyrings/
utilisant gpg
comme requis.