☰
linux-command 命令详解:rpmsign 使用 RPM 软件包签名管理工具的完整实战指南
2026/10/3 8:29:44 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

导读

rpmsign是 RPM 软件包体系中的签名管理工具,负责为 RPM 包添加、验证、删除和重新生成数字签名,是保障软件包来源可信与内容完整性的关键一环。本文以 linux-command 开源仓库中的 rpmsign.md 为骨架,结合仓库内 rpm.md、gpg.md、rpmbuild.md 等相关命令文档,完整讲解 rpmsign 的语法、全部选项、典型工作流程与安全实践,帮助读者掌握从生成密钥、签名到校验的完整链路。

rpmsign 是什么:RPM 软件包的签名管理工具

rpmsign 命令是使用 RPM 软件包的签名管理工具。在 RPM 软件包体系中,它承担着"签名生命周期管理"的职责——与 rpm(软件包管理)、rpmbuild(软件包构建)相配合:

  • rpmbuild负责把源码或二进制内容构建成 RPM 包(-ba构建二进制包与源码包、-bb构建二进制包,构建产物通常位于/usr/src/redhat/RPMS/与/usr/src/redhat/SRPMS/,参见 rpmbuild.md);
  • rpmsign负责在构建完成后对 RPM 包施加或移除签名,使其具备可验证的出处;
  • rpm负责日常的安装、升级、查询与签名校验(如rpm -K检查软件包签名和校验和)。

三者共同构成了 RPM 软件包从构建、签名到验证的完整链条。

语法

rpmsign(选项)

其中"选项"决定本次操作的动作类型(添加、验证、删除、导入或重签)。rpmsign 通常与一个或多个 RPM 软件包文件名配合使用,例如rpmsign --addsign package.rpm。

选项详解

rpmsign 的全部选项如下:

--addsign:为自动软件包添加签名; --checksig:验证软件包签名; --delsign:删除软件包签名; --import:导入公钥; --resign:重新签名软件包; --nodigest:不验证软件包摘要; --nosignature:不验证软件包签名。

各选项的实战含义与典型用途如下。

--addsign:为软件包添加签名

为指定的 RPM 软件包添加(追加)数字签名。该选项适用于首次签名,通常配合 GPG 私钥使用,签名过程会提示输入私钥的 passphrase。它不会移除包上已有的其他签名,而是在现有签名集合上追加新的签名。

--checksig:验证软件包签名

验证指定 RPM 软件包的签名与摘要是否有效,是接收第三方软件包时的首选自检手段。验证时需要本地已经拥有对应的公钥(可通过--import导入)。该选项与 rpm.md 中提到的rpm -K(检查软件包签名和校验和)目的一致,两者可互为补充。

--delsign:删除软件包签名

从软件包中移除已有签名。典型场景包括:

  • 软件包被重新打包或内容被修改后,旧签名已经失效,需要先删除再重签;
  • 需要以无签名状态重新分发软件包。

--import:导入公钥

导入用于验证签名的公钥。RPM 生态中常见做法是先将发行方 GPG 公钥导入系统(例如导入到 RPM 数据库中),后续的--checksig或rpm -K校验才能通过。公钥的管理与生成细节可参考仓库内的 gpg.md:GPG 支持--generate-key/--quick-generate-key生成密钥对、--export导出公钥、--import导入公钥,且支持 RSA、DSA、ECDSA、EDDSA 等多种公钥算法与 SHA1~SHA512 的哈希算法。

--resign:重新签名软件包

对已有签名的软件包进行重新签名,通常用于以下情况:

  • 签名密钥更换(轮换)后,用新密钥覆盖旧签名;
  • 包内容更新后同步刷新签名,保证签名与内容一致;
  • 需要统一使用同一把发布密钥管理多个软件包。

--nodigest:不验证软件包摘要

在进行签名校验(--checksig)时跳过对软件包摘要(digest)的验证。摘要用于校验包内容是否被篡改,正常情况下不应省略;仅在排查特定问题(如包的摘要格式不兼容)时才考虑使用。

--nosignature:不验证软件包签名

在进行签名校验时跳过签名验证,只关注其他检查项。--nodigest与--nosignature组合使用,等价于"完全跳过完整性检查",应仅用于调试或对来源绝对可信的内部包。

实战流程:从密钥生成到签名校验的完整链路

结合仓库内 gpg.md 与 rpm.md,一套完整的 RPM 包签名工作流如下。

第 1 步:生成 GPG 密钥对

签名的基础是 GPG 密钥对,私钥用于签名,公钥用于分发验证:

gpg --generate-key # 交互式生成密钥对(也可用 --quick-generate-key 快速生成) gpg --list-keys # 查看公钥 gpg --list-secret-keys # 查看私钥 gpg --export -a > mykey.asc # 导出 ASCII 格式的公钥,用于分发给用户验证

第 2 步:为 RPM 包添加签名

rpmsign --addsign your-package.rpm

执行时会使用本地 GPG 私钥对包进行签名,并提示输入私钥的 passphrase。签名完成后,可以再次使用rpm -K your-package.rpm(参见 rpm.md)确认签名已生效。

第 3 步:分发公钥并验证签名

接收方需要先导入发行方的公钥,再对包做校验:

# 接收方导入公钥 rpmsign --import mykey.asc # 验证软件包签名与摘要 rpmsign --checksig your-package.rpm # 或使用 rpm 自带校验 rpm -K your-package.rpm

校验通过意味着:包确实由持有对应私钥的一方签名,且包内容未被篡改。若需要"只看签名、不查摘要"或"只看摘要、不查签名",可分别追加--nosignature或--nodigest。

第 4 步:密钥更换时的重新签名

当发布密钥轮换或包内容更新后,需要先移除旧签名再用新密钥重签:

rpmsign --delsign your-package.rpm rpmsign --resign your-package.rpm

与仓库其他命令的协同:完整的 RPM 信任链

rpmsign 并非孤立存在,linux-command 仓库中多个命令文档共同勾勒出 RPM 体系的信任模型:

  • rpm.md:日常的包管理入口,其中的-K(检查软件包签名和校验和)、-V(验证软件包或文件的完整性)与 rpmsign 的签名校验目标一致;仓库文档还总结了 RPM 校验字段SM5DLUGT(size、modified、md5、device、link 路径、user、group、time),可作为理解"摘要校验什么"的补充;
  • rpmbuild.md:包的构建环节,构建出的二进制包(/usr/src/redhat/RPMS/下)和源码包(/usr/src/redhat/SRPMS/下)正是 rpmsign 的签名对象;
  • gpg.md:签名所依赖的密钥体系,涵盖密钥生成、导出、导入、签名、验签等全部底层操作;
  • reposync.md:仓库同步时的--gpgcheck选项会在下载后删除 GPG 签名检查失败的包,说明签名校验已深度嵌入到 yum 仓库管理流程中,是软件分发可信度的最后一道防线。

使用建议与注意事项

  • 先建密钥,再谈签名:签名依赖 GPG 私钥,务必妥善保管私钥并设置强 passphrase,公钥则通过官方渠道(如官网、邮件等)分发给用户;
  • 校验优先:对来源不明的 RPM 包,务必先rpmsign --checksig或rpm -K再安装,--nodigest、--nosignature仅限调试场景,切勿在生产环境默认跳过校验;
  • 密钥轮换要重签:更换签名密钥后记得执行--delsign+--resign,避免旧签名失效导致用户无法安装;
  • 与仓库流程结合:在自建 yum 仓库时,可配合 reposync.md 的--gpgcheck及 yum.md 的签名检查策略,将签名校验固化到自动化分发流程中。

通过上述步骤,开发者可以完整掌握"构建 → 签名 → 分发 → 校验 → 轮换"的 RPM 软件包签名生命周期,为自建软件源或分发内部 RPM 包提供可靠的来源可信与内容完整性保障。

  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载
上一篇:GodMode9 完全指南:解锁 Nintendo 3DS 文件系统的终极钥匙
下一篇:DeepTutor智能学习助手:5大核心功能深度探索与高效使用指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询