Menu Fermer

Comment ajouter des clés de signature à APT sur Debian, Ubuntu, Mint, …

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.

Comment ajouter des clés de signature à APT sur Debian, Ubuntu, Mint, ...

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.
GPG error - signatures couldn't be verified because the public key is not available

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 :

Comment installer ungoogled-chromium par APT

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
Ajouter une clé avec apt-key adv

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
Lister les clés publiques APT avec 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