Apt : ajout correct d'une clé GPG

Tu es le deuxième ici à référer à cette idée.
Je n’ai aucun soucis avec… si ce n’est que par défaut ce répertoire semble ne pas exister ; il faut donc le créer.
Je peux rajouter l’instruction correspondante et modifier le premier post.

Dans ce cas-là, pourquoi ne pas créer un répertoire ~/keyrings et l’utiliser, ce qui serait moins contraignant pour l’utilisateur !?


le second lien que fournit @anon70622873 semble vouloir dire que :

  • l’usage de /usr/share/keyrings n’est qu’un effet de mode publicitaire,
  • c’est quand même la meilleure approche pour ceux qui fournissent des .deb et qui ont leur propre dépôt
  • qu’il n’y a pas de gain réel à utiliser l’option signed-by.

Si je comprends bien, le mieux serait de fournir un fichier au format deb822 que tu n’as plus qu’à placer dans le répertoire sources.list.d ; à bon entendeur - pour reprendre l’expression ci-dessus…
Un nom-projet.sources suffirait ?!


Ce qui est sûr, c’est que le manpage d’apt-key nous dit clairement qu’après Debian 11, byebye !

apt-key(8) will last be available in Debian 11 and Ubuntu 22.04.

De même, je ne vois aucune mention d’un répertoire à privilégier… sauf dans le man d’apt-key, dont toutes les déclarations sont obsolètes - et donc amener à disparaître.


Ce qui me semble pertinent est que si nous ne voulons pas utiliser, par convention, le répertoire /usr/share/keyrings mais plutôt /usr/local/share/keyrings voire $HOME/keyrings, si l’option signed-by n’est pas utilisé, comment l’outil apt pourrait s’y référer, puisque ce sont des répertoires hors analyse ! ?
(en effet, je rappelle ici la lecture du man sources.list qui explique que par défaut, seuls trusted.gpg{.d} sont sélectionnés pour « lecture »)

Pour remettre 1 € dans le nourin , la commande gpg utilise ses trousseaux dans ~/.gnupg pour un utilisateur lamba ou /root/.gnupg pour l’utilsateur root

ce qui fait que l’utilisation par exemple de la commande

 gpg --keyserver pgpkeys.mit.edu --recv-key D1742AD60D811D58

rempli des trousseaux à l’insu du plein gré de l’utilisateur. Lister par la commande

gpg --list-keys

Donc pour avoir une clé valide pour apt j’utilise mes 3 commandes en passant par /tmp
Exemple pour Spotify:

  • Récupérer la clé du site
wget -O /tmp/0D811D58.gpg https://download.spotify.com/debian/pubkey_0D811D58.gpg
  • Convertir dans un trousseau temporaire
gpg --no-default-keyring --keyring /tmp/spotify-keyring.gpg --import /tmp/0D811D58.gpg
  • Créer une clé valide pour apt
gpg --no-default-keyring --keyring /tmp/spotify-keyring.gpg --export --output /etc/apt/trusted.gpg.d/spotify.gpg
  • Vérification
apt-key list

/etc/apt/trusted.gpg.d/spotify.gpg

----------------------------------

pub rsa4096 2020-09-08 [SC] [expire : 2021-12-02]

8FD3 D9A8 D380 0305 A9FF F259 D174 2AD6 0D81 1D58

uid [ inconnue] Spotify Public Repository Signing Key <[tux@spotify.com](mailto:tux@spotify.com)>*

type de fichier

/etc/apt/trusted.gpg.d$ file spotify.gpg

spotify.gpg: PGP/GPG key public ring (v4) created Tue Sep 8 13:35:47 2020 RSA (Encrypt or Sign) 4096 bits MPI=0xd0ff0bba75deda92…

Car pour moi il s’agit d’utiliser le dépôt spotify pour utiliser spotify

apt policy spotify-client
spotify-client:
  Installé : 1:1.1.55.498.gf9a83c60
  Candidat : 1:1.1.55.498.gf9a83c60
 Table de version :
 *** 1:1.1.55.498.gf9a83c60 500
        500 http://repository.spotify.com stable/non-free amd64 Packages
        100 /var/lib/dpkg/status

Non, pour root, c’est aussi ~/.gnupg. C’est /root/.gnupg seulement si le home de root est /root (ce qui est le cas la majorité du temps).
Sinon, si tu n’es pas root, tu as le chemin avec ~root/.gnupg.

AMHA, les clés GPG des dépôts tiers n’ont rien à faire dans $HOME. $HOME ne doit contenir que les éléments de configuration propres à l’utilisateur.
Elles doivent être soit dans un dossier sous /usr/local/share (/keyrings ou /apt-keys ou ce que vous voulez) et référencées par signed-by (sinon cela ne fonctionne pas), soit directement dans le fichier truc.sources (solution idéale). Et l’usage du dépôt tiers doit être limité avec un fichier de configuration (apt pinning).
Le problème de avec les clés dans/etc/apt/trusted.gpg.d/, c’est qu’elles sont valables pour tous les dépôts comme expliqué dans les liens données et le Wiki Debian.
Les fournisseurs de dépôts tiers devraient donc idéalement fournir un fichiers truc.sources contenant la clé GPG et un fichier de préférences.

2 J'aime

Un vrai travail de bénédictin


Err :7 https://cdn-aws.deb.debian.org/debian bookworm InRelease
  Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9
Err :8 https://cdn-aws.deb.debian.org/debian sid InRelease
  Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9

c’est la clé de bullseye

gpg --keyserver pgpkeys.mit.edu --search-keys 0E98404D386FA1D9
gpg: data source: http://pgpkeys.mit.edu:11371
(1)	Debian Archive Automatic Signing Key (11/bullseye) <ftpmaster@debian.o
	  4096 bit RSA key 73A4F27B8DD47936, créé : 2021-01-17, expire : 2029-01-15
Keys 1-1 of 1 for "0E98404D386FA1D9".  Entrez le ou les nombres, (S)uivant, ou (Q)uitter > Q

/etc/apt/sources.list:deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg] https://cdn-aws.deb.debian.org/debian-security bullseye-security contrib main non-free
/etc/apt/sources.list:deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-stable.gpg] https://cdn-aws.deb.debian.org/debian/ bullseye contrib main non-free
/etc/apt/sources.list:deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-automatic.gpg] https://cdn-aws.deb.debian.org/debian/ bullseye-proposed-updates contrib main non-free
/etc/apt/sources.list:deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-automatic.gpg] https://cdn-aws.deb.debian.org/debian/ bullseye-updates contrib main non-free
/etc/apt/sources.list:deb  [signed-by=/usr/share/keyrings/debian-archive-bullseye-automatic.gpg] https://cdn-aws.deb.debian.org/debian/ bullseye-backports contrib main non-free
/etc/apt/sources.list:deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-automatic.gpg] https://cdn-aws.deb.debian.org/debian/ bookworm contrib main non-free
/etc/apt/sources.list:deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-automatic.gpg] https://cdn-aws.deb.debian.org/debian/ sid contrib main non-free
/etc/apt/sources.list.d/03-spotify.list:deb [arch=amd64 signed-by=/usr/share/keyrings/spotify.gpg] http://repository.spotify.com stable non-free
etc/apt/preferences.d/spotify 
Package: *
Pin: origin repository.spotify.com
Pin-Priority: 1

Package: spotify-client
Pin: origin repository.spotify.com
Pin-Priority: 500

Il était inutile de toucher aux dépôts officiels.
Par contre pour ton dépôt spotify, tu aurais pu virer /etc/apt/sources.list.d/03-spotify.list et le remplacer par un /etc/apt/sources.list.d/spotify.sources contenant :

Types: deb
URIs: http://repository.spotify.com
Suites: stable
Components: non-free
Signed-By:
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBF9XbJMBEADQ/wu6dd7akoE1PrL6WpARdhoHjt2OU5Uj4H2vy2YWuEB8aaqX
+wjMVAAiyf2jz2gJnXnwqcfjRf9hsw9lNh/4llVLL5gI3E/ZtKcOELsm+50/93zT
Ei3THAGylNMylDeBwAzPKnBjMpW40OKbjnq16IZ+jexkvLWhkf9iA0AvkQQ0lgX2
IBJzE2ab+doE3D92R33mnvNjIKqHRNtwV5M/F1jL1rr/FvOIXcT8txBlen+KP2w9
d1vXYbbx/0ObMbWusGdu/BiA422rpWvzED0jtAucwTEwCb+isoW05mXLvLsjmetF
HDfK/XeTyizNO4w6awdXDTAiBPHeqJ4w5JjoX42VsH38DvW3evXztv/5uLuxNXQK
vDPxaxy/DMNLHv5zJyxxU/weigXX5SGoKVATgFB9oZ/P8y+RTOwZiYrt2NgjI7K3
B6Hd9TkqktpUHHSW/REiPG/z+ZY5FqASoJbiU8/nSqn3MUF+xRzrKwPKZF9ekdoC
4o0JPxvIqIN4KndQiCHMfdtoO/PPMR4izXAfYOT1x1KC9fq9uhcaf9FyjgduIGNR
ttlPrfPyM/FABNUZio8jZL5s+eFMRx1b1HIe80+p8GC3vV/oGJ8gqq0Gbdz6HGbR
TQyX7ey3rowlXkyaGTamgPBy4gHrHMCLdpXd35L7zHZH7nuKGW6n4U3HWwARAQAB
tDdTcG90aWZ5IFB1YmxpYyBSZXBvc2l0b3J5IFNpZ25pbmcgS2V5IDx0dXhAc3Bv
dGlmeS5jb20+iQJUBBMBCgA+FiEEj9PZqNOAAwWp//JZ0XQq1g2BHVgFAl9XbJMC
GwMFCQJRQwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ0XQq1g2BHVg4VhAA
yOAF7yLRjSNrKAmasZCq4+uHwFotg9Y5eJYyPOTjbjq5/W88cXZIazbyFeWhOY9k
Ltpv4fMISxZddlqlN59dwiygJ7mRFjl4U8FdeF9B+ZSz/u5tpAzffB/Vr0MLkBuK
IDNbGeLf/hZ3aGgrnHfoWDlNudt5hjKpZdiZwkIyBuujd1Cz9bkWZ9m6p2aVO3dF
i3+QTF9Cs2u+i0an5xgIMf3W+xWzGnGCGib6PBL4+Q5nx96JixpFDuNnEDogjQOH
xD1svyGefM9AyXegLIz0iapiM9KMRxOwReZraMVH0d/O86vjj2uB9bkF1snlZWpX
WCEEHw3IjmsJQCb4JLIUpIAwiAQt3hB58uNqbARAECeEstx1vfw3yRfDdPhA5lH7
LEDxYI4OpL5EX9WSzLcEAtv9PI7snrBSeuiS7Hy4q8j4jbMdtczV2BQ8iNOcHBEI
/ocjLrdIRylcITqmsMY/4c7SuvXj79dyutQWrDZU8vP/uA0O7FNf4oNZnIC6W0l3
muhZeun8a7MVU+x7RnkME5VjH+OS5/3IBfxp/U8dBBFpPw1gUQYCjmicCsuoT09E
iYNsp2rx/vs5JJgATd0ri3T5QborulPsN4ODXZBUDdry2QeuHCF91HBDsuF2ks0N
6HC1hKCQCAw+TS00sV5Cg/sPq6SPtOcqq/brX+zIqY0=
=8BS2
-----END PGP PUBLIC KEY BLOCK-----

La clé publique est la copie du contenu de https://download.spotify.com/debian/pubkey_0D811D58.gpg


Correction fonctionnelle :

Types: deb
URIs: http://repository.spotify.com
Suites: stable
Components: non-free
Signed-By: /usr/local/share/keyrings/spotify.gpg

(ajout par PengouinPdt)

2 J'aime

:astonished: On peut faire ça ?

1 J'aime

ça veut pas jouer

sudo apt edit-sources spotify.sources
E: Le type « Types: » est inconnu sur la ligne 1 dans la liste des sources /etc/apt/sources.list.d/spotify.sources.list
E: La liste des sources ne peut être lue.
Impossible de lire /etc/apt/sources.list.d/spotify.sources.list. Faut-il l'éditer à nouveau ? [O/n] n
E: Le type « Types: » est inconnu sur la ligne 1 dans la liste des sources /etc/apt/sources.list.d/spotify.sources.list
E: La liste des sources ne peut être lue.

apt list --installed | grep apt

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

apt-file/stable,stable,testing,testing,unstable,unstable,now 3.2.2 all  [installé]
apt-rdepends/stable,stable,testing,testing,now 1.3.0-7 all  [installé]
apt-utils/testing,unstable,now 2.3.8 amd64  [installé]
apt/testing,unstable,now 2.3.8 amd64  [installé]
laptop-detect/stable,stable,testing,testing,unstable,unstable,now 0.16 all  [installé, automatique]
laptop-mode-tools/stable,stable,testing,testing,unstable,unstable,now 1.74-1.1 all  [installé]
libapt-pkg-perl/testing,unstable,now 0.1.40 amd64  [installé]
libapt-pkg6.0/testing,unstable,now 2.3.8 amd64  [installé, automatique]
libatk-adaptor/stable,testing,unstable,now 2.38.0-1 amd64  [installé]
libraptor2-0/stable,testing,unstable,now 2.0.14-1.2 amd64  [installé, automatique]
python-apt-common/stable,stable,testing,testing,unstable,unstable,now 2.2.1 all  [installé]
python3-apt/stable,testing,unstable,now 2.2.1 amd64  [installé]
synaptic/testing,unstable,now 0.90.2+b1 amd64  [installé]
xserver-xorg-input-synaptics/stable,testing,unstable,now 1.9.1-2 amd64  [installé]

Ton fichier doit s’appeler :
/etc/apt/sources.list.d/spotify.sources
et non :
/etc/apt/sources.list.d/spotify.sources.list

*.list pour le format classique *.sources pour le format format deb822

1 J'aime

c’est le comportement de l’outil
sudo apt edit-sources spotify.sources

man apt dit :

   edit-sources (work-in-progress)
       edit-sources lets you edit your sources.list(5) files in your preferred text editor while also providing basic sanity checks.

Ce n’est pas finalisé. C’est donc a ne pas utiliser du tout avec prudence.

1 J'aime

oui, nativement l’option edit-sources semble ne pas gérer (encore, vu que le travail est en cours) le format deb822 ; il faut l’éditer avec n’importe quel éditeur de texte et le placer dans le répertoire sources.lists.d


le premier post est modifié en tenant compte de la remarque à propos du répertoire local :wink:

1 J'aime

même créer avec gedit

/etc/apt/sources.list.d$ cat spotify.sources
Types: deb
URIs: http://repository.spotify.com
Suites: stable
Components: non-free
Signed-By:
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBF9XbJMBEADQ/wu6dd7akoE1PrL6WpARdhoHjt2OU5Uj4H2vy2YWuEB8aaqX
+wjMVAAiyf2jz2gJnXnwqcfjRf9hsw9lNh/4llVLL5gI3E/ZtKcOELsm+50/93zT
Ei3THAGylNMylDeBwAzPKnBjMpW40OKbjnq16IZ+jexkvLWhkf9iA0AvkQQ0lgX2
IBJzE2ab+doE3D92R33mnvNjIKqHRNtwV5M/F1jL1rr/FvOIXcT8txBlen+KP2w9
d1vXYbbx/0ObMbWusGdu/BiA422rpWvzED0jtAucwTEwCb+isoW05mXLvLsjmetF
HDfK/XeTyizNO4w6awdXDTAiBPHeqJ4w5JjoX42VsH38DvW3evXztv/5uLuxNXQK
vDPxaxy/DMNLHv5zJyxxU/weigXX5SGoKVATgFB9oZ/P8y+RTOwZiYrt2NgjI7K3
B6Hd9TkqktpUHHSW/REiPG/z+ZY5FqASoJbiU8/nSqn3MUF+xRzrKwPKZF9ekdoC
4o0JPxvIqIN4KndQiCHMfdtoO/PPMR4izXAfYOT1x1KC9fq9uhcaf9FyjgduIGNR
ttlPrfPyM/FABNUZio8jZL5s+eFMRx1b1HIe80+p8GC3vV/oGJ8gqq0Gbdz6HGbR
TQyX7ey3rowlXkyaGTamgPBy4gHrHMCLdpXd35L7zHZH7nuKGW6n4U3HWwARAQAB
tDdTcG90aWZ5IFB1YmxpYyBSZXBvc2l0b3J5IFNpZ25pbmcgS2V5IDx0dXhAc3Bv
dGlmeS5jb20+iQJUBBMBCgA+FiEEj9PZqNOAAwWp//JZ0XQq1g2BHVgFAl9XbJMC
GwMFCQJRQwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ0XQq1g2BHVg4VhAA
yOAF7yLRjSNrKAmasZCq4+uHwFotg9Y5eJYyPOTjbjq5/W88cXZIazbyFeWhOY9k
Ltpv4fMISxZddlqlN59dwiygJ7mRFjl4U8FdeF9B+ZSz/u5tpAzffB/Vr0MLkBuK
IDNbGeLf/hZ3aGgrnHfoWDlNudt5hjKpZdiZwkIyBuujd1Cz9bkWZ9m6p2aVO3dF
i3+QTF9Cs2u+i0an5xgIMf3W+xWzGnGCGib6PBL4+Q5nx96JixpFDuNnEDogjQOH
xD1svyGefM9AyXegLIz0iapiM9KMRxOwReZraMVH0d/O86vjj2uB9bkF1snlZWpX
WCEEHw3IjmsJQCb4JLIUpIAwiAQt3hB58uNqbARAECeEstx1vfw3yRfDdPhA5lH7
LEDxYI4OpL5EX9WSzLcEAtv9PI7snrBSeuiS7Hy4q8j4jbMdtczV2BQ8iNOcHBEI
/ocjLrdIRylcITqmsMY/4c7SuvXj79dyutQWrDZU8vP/uA0O7FNf4oNZnIC6W0l3
muhZeun8a7MVU+x7RnkME5VjH+OS5/3IBfxp/U8dBBFpPw1gUQYCjmicCsuoT09E
iYNsp2rx/vs5JJgATd0ri3T5QborulPsN4ODXZBUDdry2QeuHCF91HBDsuF2ks0N
6HC1hKCQCAw+TS00sV5Cg/sPq6SPtOcqq/brX+zIqY0=
=8BS2
-----END PGP PUBLIC KEY BLOCK-----
@debian:/etc/apt/sources.list.d$ sudo apt update
E: Impossible de traiter le fichier /etc/apt/sources.list.d/spotify.sources (1)
E: La liste des sources ne peut être lue.

je suis pas le seul mais c’est resté sans réponse
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=806943

Je suppose que la clé GPG directement dans le fichier sources n’est pas encore gérée par apt :

2 J'aime

Eh, beh, on n’est pas encore « sortie de l’auberge » - pfff ! :stuck_out_tongue:

J’ai remanié la partie 4, sur la gestion du fichier sources en proposant pour le format RFC822 ou pour la manière « historique ».
(ça complique un peu la lecture… il me semble)
Qu’en pensez-vous ?!

11/09/2021 : Pour le projet Lutris :

Types: deb
URIs: http://download.opensuse.org/repositories/home:/strycore/Debian_11/
Suites: /
Architectures: amd64
Components: 
Signed-By: /usr/local/share/keyrings/lutris.gpg

source du projet

14/09/2021 : Pour le projet Mega :

Types: deb
URIs: https://mega.nz/linux/MEGAsync/Debian_11/
Suites: /
Architectures: amd64
Components: 
Signed-By: /usr/local/share/keyrings/mega.gpg

source


⇒ Pour info, le téléchargement d’un binaire deb depuis le site du projet, ou l’installation par le biais de ce fichier sources, installera un fichier megasync.list dans le répertoire /etc/apt/sources.list.d/ afin d’assurer les màj ; il en résultera un conflit entre les deux fichiers provoquant des erreurs W (warning). Il faut en détruire unà vous de décider lequel !

11/09/2021 : Pour le projet Visual Studio Code :

Types: deb
URIs: https://packages.microsoft.com/repos/vscode
Suites: stable
Architectures: amd64
Components: main
Signed-By: /usr/local/share/keyrings/vscode.gpg

Ce dépôt existe aussi pour les architectures : arm64 et armhf.

source

11/09/2021 : Pour le projet Teamviewer :

Types: deb
URIs: https://linux.teamviewer.com/deb
Suites: stable
Architectures: amd64
Components: main
Signed-By: /usr/local/share/keyrings/teamviewer.gpg

source pour la clé GPG


⇒ Pour info, le téléchargement d’un binaire deb depuis le site du projet, ou l’installation par le biais de ce fichier sources, installera un fichier teamviewer.list dans le répertoire /etc/apt/sources.list.d/ afin d’assurer les màj ; il en résultera un conflit entre les deux fichiers provoquant des erreurs W (warning). Il faut en détruire unà vous de décider lequel !