在 Jenkins 中安全存储 GPG 私钥?

问题描述 投票:0回答:1

我正在尝试将我的 GPG 私钥存储在 Jenkins 中,以便我可以使用它来签署 rpm 包和存储库。这工作正常,但我无法混淆密钥,以便它不会显示在 Jenkins 日志中。我尝试使用凭证插件将其添加为全局凭证,但是当我将其粘贴进去,然后使用右侧的图标查看它时,我只看到顶行

------ BEGIN PGP PRIVATE KEY BLOCK -----

另外(我在这里一定很愚蠢)当我在管道作业中获取私钥时,我只看到密钥的 ID,而不是实际的秘密!?

我想也许 Jenkins 很聪明,通过用 ID 替换它来混淆密钥,但我尝试了“head”和“grep”,但我仍然得到同样的结果。

Jenkins 中存储 GPG 私钥的最佳位置在哪里?

jenkins key gnupg
1个回答
0
投票

首先,您需要将 GPG 密钥作为秘密文件存储在 Jenkins 凭证管理器中。您也可以存储为秘密文本,但在这种情况下我更喜欢使用秘密文件。

现在,要将密钥导入到 Jenkins Pipeline 中,请使用以下代码:

withCredentials([file(credentialsId: credentialId, variable: 'signingKey')])
{
    // copy the key to singkey.gpg file in *plain text* so we can import it
    sh ('cat $signingKey > $WORKSPACE/signkey.gpg')
    // import the key into the gpg keyring
    sh ('gpg --allow-secret-key-import --import signkey.gpg')
}

也许将 gpg 文件复制为纯文本并不是谈论安全性的最佳选择,但目前它有效。

© www.soinside.com 2019 - 2024. All rights reserved.