Eu acho que eu mesmo descobri. apt não verifica a autenticação em pacotes individuais, mas apenas nos arquivos Release.
Eu criei uma chave gpg usando "gpg --gen-key", aqui está a lista:
> gpg --list-keys
/home/<user>/.gnupg/pubring.gpg
--------------------------------
pub 2048R/99EDE0B7 2013-02-05
uid Some Company
sub 2048R/97337D10 2013-02-05
Eu exportei a chave pública usando:
> gpg --output key.pub --armor --export 99EDE0B7
Eu assinei um pacote deb usando:
> dpkg-sig --sign builder -k 99EDE0B7 mypackage.deb
Eu posso verificar a assinatura no mesmo controlador:
> dpkg-sig --verify mypackage.deb
Processing mypackage.deb...
GOODSIG _gpgbuilder 31C631682D8C1DC833576A283C9A9AA799EDE0B7 1366790488
Eu importo a chave pública em um controlador diferente:
> 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
Mas quando eu verificar o pacote neste novo controlador a assinatura é desconhecida:
> dpkg-sig --verify mypackage.deb
Processing mypackage.deb...
UNKNOWNSIG _gpgbuilder 99EDE0B7
Eu preciso usar "gpg --import" para realmente verificar o pacote:
> gpg --import key.pub
Em seguida, a verificação funciona:
> dpkg-sig --verify mypackage.deb
Processing mypackage.deb...
GOODSIG _gpgbuilder 980CDF084EC87D4C003E020C4B324EFB85743C26 1366872932
Mas quando uso o apt para instalar o pacote, recebo um erro de autenticação:
> 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]?
E eu não consigo descobrir por que: - (
thx!
Eu acho que eu mesmo descobri. apt não verifica a autenticação em pacotes individuais, mas apenas nos arquivos Release.
tente o seguinte:
extraia o conteúdo do arquivo deb usando $ ar vx file.deb
verifique o arquivo _gpgbuilder e que o arquivo de dados tem uma extensão .tar.gz
Se tiver um .tar.xz significa que o pacote foi criado usando um dpkg-deb no Ubuntu que possui xz de tipo de compactação padrão (verifique a página man do dpkg-deb na opção tipo de compactação / -Z)
O dpkg-sig checa por data.tar.gz (como se o arquivo tivesse sido criado com compress-type gzip - comportamento padrão no Debian).
Um pequeno hack seria alterar o script Perl do dpkg-sig para verificar se o arquivo de dados tem extensão .tar.xz
Espero que ajude. (Eu publiquei isso no link )
Editar: alguém fez um patch link :)