软件包签名/验证在 Ubuntu 16.04 上通过,但在 Ubuntu 14.04 上失败

软件包签名/验证在 Ubuntu 16.04 上通过,但在 Ubuntu 14.04 上失败

我正在尝试实现 deb 包的签名和验证过程。

这就是我正在做的事情:

  1. 生成 GPG 密钥教程

  2. 签署包裹:

    $ dpkg-sig -k F4C52DDF --sign builder client.deb 
    Processing client.deb...
    You need a passphrase to unlock the secret key for user: "Foo Bar <[email protected]>"
    2048-bit RSA key, ID F4C52DDF, created 2018-03-13
    Signed deb client.deb
    
  3. 验证包:

    $ dpkg-sig --verify client.deb
    Processing client.deb
    GOODSIG _gpgbuilder 3910701E538E37B3F93B8FCC7570E500F4C52DDF 1520919017
    

当我在 Ubuntu 16.04 上运行这些步骤时,我收到了一条 GOODSIG 消息,但是当我尝试在 Ubuntu 14.04 上运行这些完全相同的步骤时,我收到了BADSIG _gpgbuilder

有人能帮我找出问题所在吗?我似乎找不到太多帮助。

答案1

我自己找到了答案,以防其他人遇到这个问题。

事实证明,dpkg-sig 中有一个错误,后来被修补了(详细信息:https://bugs.launchpad.net/ubuntu/+source/dpkg-sig/+bug/1342938

问题在于,dpkg 在构建 deb 包时使用两种压缩类型:gz 和 xz。错误在于,dpkg-sig 在验证签名时仅检查 data.tar.gz,并且它在 data.tar.xz 上失败/返回 badsig。就我而言,xz 压缩方法用于构建我所测试的包。

该错误现已修补,更新的 dpkg-sig deb 包可以从以下位置下载:http://ftp.us.debian.org/debian/pool/main/d/dpkg-sig/dpkg-sig_0.13.1+nmu4_all.deb

此问题出现在 Ubuntu 14.04 中,因为从 apt-repository 下载时,我们得到的是较旧、未打补丁的 dpkg-sig 版本。因此,如果 Ubuntu 14.04 上有人遇到此问题,他们只需从上面提供的 ftp url 下载更新的 deb 包,这应该可以解决他们的问题。

另外需要注意的是,您可以通过在终端上执行以下操作来检查压缩类型:

ar vx packagename.deb

您应该会得到 data.tar.gz 或 data.tar.xz 以及一些其他文件。这应该可以帮助您确定压缩类型。

另一个有用的参考: https://ubuntuforums.org/showthread.php?t=2175836

相关内容