【问题标题】:Using gpg to sign an RPM as part of a continous build - how do I avoid the prompt for the passphrase?作为持续构建的一部分,使用 gpg 对 RPM 进行签名 - 如何避免提示输入密码?
【发布时间】:2010-10-11 16:16:55
【问题描述】:

我有一个持续集成构建系统,它通过由 cron 触发的 shell 脚本生成 RPM。我想用 gpg 对 RPM 进行签名,但 gpg 坚持要求用户在控制台手动输入密码,这显然是一个非首发,因为没有用于 cron 的用户控制台。

我已经阅读了有关 gpg-agent 的信息,它可以让您为当前登录会话输入一次密码,但 cron 再次没有登录会话。我想要的是能够将 gpg-agent 配置为在启动时接受一次密码,并在需要时将其交给 cron 会话。我不知道这是否可行,而且 gpg-agent 的文档相当少。

另一种方法是在 gpg 要求时使用 expect 来输入密码,但显然这是一个很大的安全漏洞,因为密码需要包含在构建脚本中。

【问题讨论】:

    标签: continuous-integration build-automation signing gnupg


    【解决方案1】:

    您应该在启动时启动 gpg-agent 并保存 GPG_AGENT_INFO 环境变量。然后你可以在你的脚本环境中设置它并且应该按预期工作。此外,请确保 GPG_AGENT_INFO 中的套接字权限允许您的脚本读取它。

    【讨论】:

    • 谢谢,这正是我要找的。但是如何查询或设置套接字的权限呢?
    • 您像往常一样设置权限(在 GPG_AGENT_INFO 中的路径上设置)。然后,如果设置了环境变量,gpg 应该使用它而无需您采取更多行动。请注意,我没有尝试过这种情况,所以让我们看看它是否有效;)
    【解决方案2】:

    您用于生成 RPM 的任何构建工具都可以对其进行签名。例如,gradle 有一个为你签名的插件。您必须使用密钥环文件的 id、密码和位置创建一个属性文件,其余的由它来完成。

    见:https://docs.gradle.org/current/userguide/signing_plugin.html

    【讨论】:

    • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多