Pour authentifier les packages au référentiel APT provenant de sources externes, vous devez installer les clés de signatures.
A partir de là, les sources et paquets authentifiées à l’aide de ces clés seront considérés comme de confiance.
Ce tutoriel vous guide pour ajouter des clés de signature au référentiel APT sur Debian, Ubuntu.
Table des matières
Résoudre l’erreur GPG – the public key is not available
Si vous obtenez une erreur GPG lors de la mise à jour du référentiel APT par la commande apt update, cela indique que les clé GPG sont manquantes.
Il est important de noter la clé publique donnée en fin du message d’erreur qui est nécessaire dans certaines commandes données dans ce tutoriel.
W: GPG error: https://nginx.org/packages/debian bullseye InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY <cle>
E: The repository 'https://nginx.org/packages/debian bullseye InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
APT-Key prend en charge uniquement le format OpenPGP binaire (GPG Key Public Ring) dans des fichiers avec l’extension “GPG”, et non le format de base de données de la boîte de clé introduite dans les versions GPG plus récentes par défaut pour les fichiers de clés (fichier asc).
Ce dernier est le le format ASCII Armored avec l’extension “ASC disponible pour apt version = 1.4.
Pour plus d’informations sur le fonctionnement général, lire :
Comment ajouter des clés de signature à APT sur Debian, Ubuntu, Mint, …
avec wget
wget est un utilitaire qui permet de télécharger des fichiers distant par HTTP ou FTP.
Voici la syntaxe à utiliser pour télécharger et installer une clé de signature pour APT :
sudo wget https://exemple.com/key/repo-key.gpg -o /usr/share/keyrings/<mondepot>-archive-keyring.gpg
Par exemple avec Cloudflare :
sudo wget -O- https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg
avec curl
Curl n’est pas installé par défaut, vous devez donc l’installer avec APT.
sudo apt install curl
Voici la syntaxe à utiliser pour télécharger une clé publique pour APT :
curl https://exemple.com/key/repo-key.gpg -o /usr/share/keyrings/<mondepot>-archive-keyring.gpg
Par exemple pour ajouter la clé GPG Cloudflare :
sudo curl https://pkg.cloudflare.com/cloudflare-main.gpg -o /usr/share/keyrings/cloudflare-main.gpg
Lorsque le fichier de clé est au format armor, il faut utiliser la commande gpg –dearmor comme ceci :
curl -s 'https://download.opensuse.org/repositories/home:/ungoogled_chromium/Debian_Bullseye/Release.key' | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home-ungoogled_chromium.gpg > /dev/null
Voici un autre exemple pour installer ungoogled-chromium :
avec gpg
gpg est la méthode actuelle recommandée par Debian pour ajouter de nouvelles signatures électroniques à APT.
La syntaxe à utiliser est la suivante :
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/<mondepot>-archive-keyring.gpg --keyserver <hkp://keyserver.serveur.com:80> --recv-keys <numeroclé>
- Pour Debian, le serveur est keyring.debian.org
- Du côté d’Ubuntu, ce sera keyserver.ubuntu.com
Par exemple, pour importer la clé OpenPGP de Linux Uprizing PPA vers /usr/share/keyrings/linux-uprisebut-archive-keyring.gpg :
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CC3D16E460A94EE17FE581CEA8CACC073C3DB2A
apt-key (obsolète)
apt-key est l’utilitaire qui gère les clés publiques des sources APT.
Toutefois, ce dernier est obsolète et vous pouvez rencontrer des messages du type :
apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
La syntaxe est la suivante :
sudo apt-key adv --keyserver <keyserveur> --recv-keys <clé>
- Pour Debian, le serveur est keyring.debian.org
- Du côté d’Ubuntu, ce sera keyserver.ubuntu.com
Par exemple pour importer les clés publiques Nginx :
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62
Executing: /tmp/apt-key-gpghome.tNNlHodVRd/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62
gpg: key ABF5BD827BD9BF62: public key "nginx signing key <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
Voici tout de même comment l’utiliser pour ajouter des clés de signatures dans APT.
En version simple en utilisant curl :
curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | sudo apt-key add -
Puis mettez à jour les sources avec apt-get update.
Une autre façon de faire est avec apt-key est la suivante :
apt-key adv --recv-keys --keyserver keyserver.distribution.com <numeroclé>
Importez d’abord la clé publique du référentiel:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
Comment supprimer des clés utilisés par APT
Les clés publiques peuvent être stockées dans deux emplacements :
- dans un fichier .gpg dans /etc/apt/trusted.gpg.d
- directement dans /etc/apt/trusted.gpg
Pour lister les clés, utilisez la commande suivante :
apt-key list
Les clés de /etc/apt/trusted.gpg sont listés en premier :
/etc/apt/trusted.gpg
--------------------
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
uid [ unknown] nginx signing key <[email protected]>
Puis suivent les clés de /etc/apt/trusted.gpg.d/
De ce fait, vous pouvez supprimer directement le fichier de clés dans /etc/apt/trusted.gpg.d/
Sinon vous pouvez utiliser la commande apt-ke suivante :
sudo apt-key del <clé>
Par exemple :
sudo apt-key del ABF5BD827BD9BF62
OK
Liens
- Apt Linux : installer et mise à jour de package et distribution
- 13 commandes APT à connaitre sur Debian, Ubuntu, Mint, …
- /etc/apt/sources.list : fichier de configuration des sources APT
- Add Repository : Modifier /etc/apt/sources.list sur Debian ou Ubuntu
- L’authentification des paquets sur APT
- Comment ajouter des clés de signature au référentiel APT sur Debian, Ubuntu
- dpkg : gestionnaire de paquets pour Debian, Ubuntu ou Mint
- 13 exemples d’utilisation de la commande dpkg pour les distributions Linux basées sur Debian
- Aptitude Linux : comment l’utiliser pour gérer les paquets
- 10+ exemples d’utilisation avancé de la commande Aptitude sur Linux
- apt-file : chercher et lister des fichiers dans les paquets
- Linux : installer un paquet (logiciel)
- Ubuntu : mettre à jour les paquets et applications
- Ubuntu : activer les dépôts universe, multiverse, restricted
- Ubuntu : ajouter PPA (dépôt personnel de logiciels)
- Utiliser DNF/YUM sur Linux Fedora, Redhat (REHL)