web-dev-qa-db-fra.com

échec de l'authentification apt sur le package auto-signé

J'ai créé une clé gpg en utilisant "gpg --gen-key", voici la liste:

> gpg --list-keys
/home/<user>/.gnupg/pubring.gpg
--------------------------------
pub   2048R/99EDE0B7 2013-02-05
uid                  Some Company
sub   2048R/97337D10 2013-02-05

J'ai exporté la clé publique en utilisant:

> gpg --output key.pub --armor --export 99EDE0B7

J'ai signé un package deb en utilisant:

> dpkg-sig --sign builder -k 99EDE0B7 mypackage.deb

Je peux vérifier la signature sur le même contrôleur:

> dpkg-sig --verify mypackage.deb 
Processing mypackage.deb...
GOODSIG _gpgbuilder 31C631682D8C1DC833576A283C9A9AA799EDE0B7 1366790488

J'importe la clé publique sur un autre contrôleur:

> apt-key add key.pub
OK
> apt-key list
/etc/apt/trusted.gpg
--------------------
pub   2048R/99EDE0B7 2013-02-05
uid                  My Company
sub   2048R/97337D10 2013-02-05

Mais lorsque je vérifie le package sur ce nouveau contrôleur, la signature est inconnue:

> dpkg-sig --verify mypackage.deb 
Processing mypackage.deb...
UNKNOWNSIG _gpgbuilder 99EDE0B7

Je dois utiliser "gpg --import" pour vérifier réellement le paquet:

> gpg --import key.pub

Ensuite, la vérification fonctionne:

> dpkg-sig --verify mypackage.deb 
Processing mypackage.deb...
GOODSIG _gpgbuilder 980CDF084EC87D4C003E020C4B324EFB85743C26 1366872932

Mais lorsque j'utilise apt pour installer le package, j'obtiens une erreur d'authentification:

> apt-get install mypackage
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  mypackage
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/12.0 kB of archives.
After this operation, 0 B of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  mypackage
Install these packages without verification [y/N]? 

Et je ne peux pas comprendre pourquoi :-(

tHX!

1
tombert

Je pense que je l'ai compris moi-même. apt ne vérifie pas l'authentification sur les packages individuels mais uniquement sur les fichiers Release.

1
tombert

essayez ce qui suit:

  1. extraire le contenu du fichier deb à l'aide de $ ar vx file.deb

  2. vérifiez le fichier _gpgbuilder et que le fichier de données a une extension .tar.gz

SI il a un .tar.xz signifie que le paquet a été créé en utilisant un dpkg-deb sur Ubuntu qui a le type de compression par défaut xz (consultez la page de manuel de dpkg-deb sur l'option compress-type/-Z)

dpkg-sig recherche data.tar.gz (comme si le fichier avait été créé avec gzip de type compress - comportement par défaut sur Debian).

Un petit hack serait de changer le script Perl dpkg-sig pour vérifier même si le fichier de données a l'extension .tar.xz

J'espère que cela aide. (J'ai posté ceci sur http://ubuntuforums.org/showthread.php?t=2175836 )

Edit: quelqu'un a fait un joli patch http://osdir.com/ml/ubuntu-bugs/2014-07/msg09103.html :)

0
mjsr