Assinando problema com o próprio repositório apt

2

Eu quero criar um repositório próprio para o nosso aplicativo. Eu criei uma chave mestra com assinatura subkey com pgp antes e eu assino o pacote deb com:

dpkg-sig --sign builder sample.deb

Então eu crio o repositório com reprepro:

reprepro --ask-passphrase -b base includedeb all sample.deb

O Reprepro cria os arquivos assinados necessários:

./conf:
distributions  options

./db:
checksums.db  contents.cache.db  packages.db  references.db  release.caches.db  version

./dists:
all

./dists/all:
InRelease  main  Release  Release.gpg

./dists/all/main:
binary-amd64  binary-i386

./dists/all/main/binary-amd64:
Packages  Packages.gz  Release

./dists/all/main/binary-i386:
Packages  Packages.gz  Release

./pool:
main

./pool/main:
s

./pool/main/s:
sample

./pool/main/s/sample:
sample_2.2.48.9015_all.deb

Eu instalo a chave pública na máquina cliente, mas depois de instalar o pacote, recebo esta mensagem:

WARNING: The following packages cannot be authenticated!
  sample
Install these packages without verification? [y/N]

Por quê?

    
por crazyman 14.12.2016 / 12:17

1 resposta

2

A assinatura de GPG é complicada. Para repositórios APT, existem duas camadas de assinaturas GPG:

  1. Assinaturas nos próprios pacotes, com dpkg-sig ou ou debsign .
  2. Assinaturas nos metadados do repositório.

Você está vendo essa mensagem porque o APT não vê nenhuma assinatura em seus metadados do repositório. Você pode fazer isso, adicionando SignWith à sua configuração do reprepro. Você pode ler mais em um post abrangente que eu escrevi, aqui .

Você pode verificar se SignWith funcionou procurando um arquivo chamado Release.gpg ou InRelease . Se você encontrar um arquivo chamado InRelease , visualize o conteúdo do arquivo e verifique se uma assinatura GPG está localizada na parte inferior. Se assim for, o reprepro gerou a assinatura corretamente. Lembre-se de que os repositórios assinados por GPG ainda estão vulneráveis a um grande número de ataques man-in-the-middle, a menos que sejam veiculados por HTTPS.

Também recomendo verificar se a chave GPG pública foi importada corretamente no sistema do cliente executando apt-key list . Se você não vir a chave na lista, adicione-a com apt-key add filename .

É importante notar que o Ubuntu e o Debian não verificam assinaturas GPG de pacotes - ele está desativado por padrão e terrivelmente, muito difícil de funcionar. Eu aconselho evitar o GPG assinar seus pacotes.

Observe também que você deve distribuir seu repositório por HTTPS, para evitar uma infinidade de erros de segurança (mesmo com assinaturas GPG).

    
por Joe Damato 15.12.2016 / 00:27