我有一个持续集成构建系统,它通过cron触发的shell脚本生成RPM。我想用gpg签署RPM,但是gpg坚持要求用户在控制台上手动输入密码,这显然不是首发,因为cron没有用户控制台。
我已经阅读了gpg-agent,它会让你输入一次当前登录会话的密码短语,但cron也没有登录会话。我想要的是能够配置gpg-agent在启动时接受密码短语,并在需要时将其交给cron会话。我不知道这是否可行,gpg-agent的文档相当少。
替代方案是使用expect在gpg请求时输入密码短语,但显然这是一个很大的安全漏洞,因为密码短语需要包含在构建脚本中。
答案 0 :(得分:5)
您应该在启动时启动gpg-agent并保存GPG_AGENT_INFO环境变量。然后,您可以在脚本的环境中进行设置,并且应该按预期工作。此外,请确保GPG_AGENT_INFO中套接字的权限允许您的脚本读取它。
答案 1 :(得分:-1)
无论您使用什么构建工具生成RPM,都可以对其进行签名。例如,gradle有一个插件可以为您进行签名。您必须使用密钥环文件的id,passphrase和位置创建属性文件,然后完成剩下的工作。
请参阅:https://docs.gradle.org/current/userguide/signing_plugin.html