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!
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.
essayez ce qui suit:
extraire le contenu du fichier deb à l'aide de $ ar vx file.deb
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 :)