Debian 9, APT e “GPG error:… InRelease: As seguintes assinaturas eram inválidas:”

6

Eu publico repositório Debian . Ele foi assinado com uma chave GPG de 4096 bits e tem sido usado em sistemas Debian 7 e Debian 8 por algum tempo. Recentemente, um dos meus usuários relatou que o Debian 9 estava tendo problemas com isso. Especificamente, apt-get update estava produzindo:

Reading package lists... Done
   W: GPG error: http://Debian-repository.JdeBP.info. stable InRelease: The following signatures were invalid: A71733F3CEBD655CB25A0DDCE1E3A497555CE68F
   W: The repository 'http://Debian-repository.JdeBP.info. stable InRelease' is not signed.

Observe que, diferentemente das pessoas em " Repet APT, a assinatura GPG de atualização do apt-get era inválida " e " Frustrado com a permissão e assinatura do GPG "Não estou usando aptly . Então, claramente eu não estou sofrendo de um bug aptly de qualquer tipo. (-:

Então, qual é o problema?

    
por JdeBP 18.08.2017 / 22:07

2 respostas

7

A causa do problema é que não há atualização para o wiki do Debian ou outro doco semelhante, e praticamente apenas alguns anúncios relacionados ao Ubuntu em um não-Debian pessoal site WWW, o suporte para chaves que declaram uma preferência por criptografia SHA-1 foi desativado no APT desde o Debian 9. (Especificamente, ele foi desativado no APT versão 1.4 ~ beta1, e o Debian 9 possui versão 1.4 .7)

Assim, um editor de repositório precisa fazer duas coisas:

  • Ajuste o personal-digest-preferences e o personal-cipher-preferences em $HOME/.gnupg/gpg.conf para eliminar o SHA-1 das preferências de um GPG. Isso evita que o problema volte com novas chaves.
  • Ajuste as preferências contidas na chave de assinatura do repositório atual para eliminar o SHA-1 de lá também. Para isso, é necessário:
    • Execute
      gpg --edit-key "${key_fingerprint}"
      substituindo a impressão digital da chave apropriada e edite as preferências de chave com os comandos pref e setpref e salve a chave no chaveiro.
    • Exporte a chave pública da chave atualizada do chaveiro para um arquivo.
    • Assinatura novamente o repositório com a chave de assinatura modificada.
    • Publique o arquivo de chave pública da chave de assinatura atualizada.

Note que não é necessário gerar uma nova chave de assinatura, e que a chave atualizada com o SHA-1 removido continuará a interoperar com o antigo APT Debian 8.

Leitura adicional

por 18.08.2017 / 22:07
2

Como o JdeBP já apontou, já que o Debian 9 não suporta mais o SHA-1, significando que o arquivo InRelease precisa ser criado com SHA-256 (o mesmo vale para Release.pg ).

O que consertou isso para mim foi especificar -digest-algo SHA256 como um parâmetro para gpg, então a sequência completa seria:

  1. Crie o pacote:

    dpkg-deb --build ${PACKAGE_NAME}-1.0/
    sudo rm ${SOME_TEMP_PATH}/*
    mv ${PACKAGE_NAME_name}-1.0.deb ${SOME_TEMP_PATH}/
    dpkg-scanpackages ${SOME_TEMP_PATH} /dev/null | gzip -9c > ${SOME_TEMP_PATH}/Packages.gz
    sudo rm ${PATH_TO_REPO_IN_WWW_SERVER}/*
    sudo cp ${SOME_TEMP_PATH}/* ${PATH_TO_REPO_IN_WWW_SERVER}
    cd ${PATH_TO_REPO_IN_WWW_SERVER}
    
  2. Assine:

    apt-ftparchive --md5 --sha256 release .  > Release 
    gpg --digest-algo SHA256 --armor --output Release.gpg --detach-sign Release
    gpg --digest-algo SHA256 --clearsign --output InRelease Release
    

A assinatura também pode ser feita a partir da pasta temporária e, em seguida, copiando para a pasta do servidor web a coisa completa ou você pode querer brincar com caminhos, ou seja, o " . " usado ao chamar apt-ftparchive , se deseja armazenar seu .deb s em uma árvore separada.

    
por 27.03.2018 / 10:28