我正在尝试实现 deb 包的签名和验证过程。
这就是我正在做的事情:
生成 GPG 密钥(教程)
签署包裹:
$ 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
验证包:
$ 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 以及一些其他文件。这应该可以帮助您确定压缩类型。