首页 > 解决方案 > GitLab:即使在成功导入和添加后,RPM 签名也会失败

问题描述

在 RPM 签名上做 PoC,目前卡住了。我使用 git bash 在笔记本电脑上创建了 GPG 密钥。然后导出公钥、私钥和trustdb。在我的 GitLab 项目中,我添加了所有 3 个文件。我的 yml 如下所示:

rpm_sign:
  stage: sign
  image: centos:latest
  only:
    - master
  script:
    - yum install -y rpm-sign
    - gpg --import public.pgp
    - gpg --import private.pgp
    - gpg --import-ownertrust < trust.txt
    - gpg --list-keys --keyid-format LONG
    - gpg --list-secret-keys --keyid-format LONG
    - rpm --define "_gpg_name eavibis" --define "_signature gpg" --addsign ics-service-rpm-1.0.3-1.noarch.rpm
    - rpm --checksig ics-service-rpm-1.0.3-1.noarch.rpm
    - tar -zcvf signed_rpm.tar.gz *.rpm
  tags: 
    - docker-devuser
  artifacts:
    paths:
      - $CI_PROJECT_DIR/*.tar.gz
    expire_in: 1 hour

如果我运行 addsign 命令两次,在第二次运行时,我会收到以下消息:

警告:ics-service-rpm-1.0.3-1.noarch.rpm 已经包含相同的签名,跳过

这清楚地表明该标志已被添加。但是,在 checksig 命令输出中,我收到以下错误:

ics-service-rpm-1.0.3-1.noarch.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3d525b88)

我究竟做错了什么?

标签: gitlabgitlab-cirpm

解决方案


您必须将 GPG 导入 rpmdb:

rpm --import public.pgp

推荐阅读