You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用X.509证书对RPM包签名并复用现有工作流?

用X.509证书签名RPM包的可行方案

当然可以!虽然RPM生态里最常用的是GPG密钥签名,但它确实支持用X.509证书来完成签名工作,刚好能衔接你现有的X.509工作流。我之前帮团队搭建过类似的流程,下面是具体的操作步骤:

1. 准备合格的X.509证书与私钥

  • 确保你的X.509证书包含数字签名扩展(这是签名软件包的核心要求,证书签发时要配置对应的扩展项)。
  • 如果你手里是PKCS#12格式的证书包(.p12),可以用openssl拆分出单独的PEM格式证书和私钥:
    # 提取公钥证书
    openssl pkcs12 -in your-cert.p12 -out cert.pem -clcerts -nokeys
    # 提取私钥(-nodes参数会去掉密码保护,若需保留密码可移除该参数)
    openssl pkcs12 -in your-cert.p12 -out key.pem -nocerts -nodes
    
  • 记得把私钥的权限设置为600,避免被其他用户读取:chmod 600 key.pem

2. 配置RPM使用X.509签名规则

编辑RPM的宏配置文件,可以是用户级的~/.rpmmacros或者系统级的/etc/rpm/macros,添加以下内容:

%_signature x509
%_x509_sign_cmd %{__gpg} --no-default-keyring --keyring %{_gpg_path}/x509.pubring --secret-keyring %{_gpg_path}/x509.secring --batch --no-armor --detach-sign --output %{__signature_filename} %{__plaintext_filename}
%_x509_verify_cmd %{__gpg} --no-default-keyring --keyring %{_gpg_path}/x509.pubring --verify %{__signature_filename} %{__plaintext_filename}

这里的逻辑是:RPM通过调用gpg工具来处理X.509签名,因为GnuPG本身支持X.509证书的操作。

3. 将X.509证书导入GPG密钥环

RPM依赖GPG的密钥环来管理签名用的证书,所以需要把你的证书导入专用的X.509密钥环:

# 导入公钥证书到X.509公钥环
gpg --no-default-keyring --keyring ~/.gnupg/x509.pubring --import cert.pem
# 导入私钥到X.509私钥环
gpg --no-default-keyring --secret-keyring ~/.gnupg/x509.secring --import key.pem

4. 签名RPM包

方式一:单独签名已构建好的RPM

rpmsign --define '_signature x509' --define '_gpg_path ~/.gnupg' -v --addsign your-package.rpm

方式二:构建RPM时直接签名

rpmbuild -ba --define '_signature x509' --define '_gpg_path ~/.gnupg' your-spec-file.spec

5. 验证签名有效性

用RPM自带的验证命令确认签名是否成功:

rpm -K your-package.rpm

如果验证通过,输出会包含x509 sha1 md5 OK的字样;如果是企业级CA签发的证书,建议把根CA证书导入系统信任存储,避免验证时出现“未知CA”的警告。


内容的提问来源于stack exchange,提问作者Mudit Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:41:42