如何使用debsigs和debsig-verify签名与验证.deb文件?
配置debsigs与debsig-verify实现.deb签名验证的完整流程(基于v0.1.26/1.20.9)
问题
配置debsigs和debsig-verify来签名、验证.deb文件的过程异常繁琐。网上流传最广的一篇旧HOWTO文档,对这两个工具的当前版本(debsigs 0.1.26、debsig-verify 1.20.9)已经完全失效。虽然每个单独问题都能在网上找到零散的解决方案,但始终找不到一套能把所有步骤串起来的完整可行流程。我最终成功完成了配置,所以整理出这套步骤分享给大家。
解决方案
1. 生成签名密钥对
用GPG生成用于签名的密钥对:
gpg --gen-key
按照提示完成密钥生成,务必记下密钥的完整指纹(后续步骤频繁用到)。
2. 配置签名密钥的存放路径
创建debsigs要求的密钥目录结构:
sudo mkdir -p /usr/share/debsig/keyrings/<你的完整密钥指纹>/debian
将你的公钥导出到该目录下:
gpg --export --armor <你的完整密钥指纹> | sudo tee /usr/share/debsig/keyrings/<你的完整密钥指纹>/debian/debsig.gpg
3. 创建验证策略文件
先创建策略文件的存放目录:
sudo mkdir -p /etc/debsig/policies/<你的完整密钥指纹>
在该目录下新建policy.xml文件,内容如下(替换其中的指纹和自定义标识):
<?xml version="1.0"?> <!DOCTYPE Policy SYSTEM "https://www.debian.org/debsig/1.0/policy.dtd"> <Policy xmlns="https://www.debian.org/debsig/1.0/"> <Origin Name="你的自定义签名名称" id="<你的完整密钥指纹>"/> <Selection> <Required Type="origin" File="debsig.gpg" id="<你的完整密钥指纹>"/> </Selection> <Verification MinOptional="0"> <Required Type="origin" File="debsig.gpg" id="<你的完整密钥指纹>"/> </Verification> </Policy>
注意:XML格式必须严格符合DTD规范,标签要闭合,属性值不能出错。
4. 对.deb文件进行签名
使用debsigs对目标.deb文件执行签名操作:
debsigs --sign=origin --keyid=<你的完整密钥指纹> <目标deb文件的路径>
5. 验证已签名的.deb文件
用debsig-verify验证签名是否有效:
debsig-verify <已签名的deb文件路径>
验证通过时,会输出类似Successfully verified package from '你的自定义签名名称'的提示;若验证失败,会给出具体的错误原因。
常见问题排查
- 若验证时提示「找不到密钥」:检查公钥是否正确放置到
/usr/share/debsig/keyrings对应的子目录中,确保密钥文件名是debsig.gpg - 若策略文件报错:检查XML标签是否闭合,密钥指纹是否完整,属性值是否正确
- 若签名失败:确认GPG密钥在当前用户的密钥环中,且用户拥有该密钥的签名权限
内容的提问来源于stack exchange,提问作者Avram
相关产品推荐
相关产品推荐

