【问题标题】:How to automatically verify all committers PGP-sign their commit如何自动验证所有提交者 PGP 签署他们的提交
【发布时间】:2023-04-11 07:49:02
【问题描述】:

Github supports 使用 PGP 密钥对提交进行签名。

我们有一个开源项目,它接受没有 PGP 密钥的人的贡献者。安全性对我们来说至关重要,因此我们决定每个合并拉取请求的人都将使用他的 PGP 密钥签署 merges,因此每个实际提交都将由作者直接签名,和/或通过合并。

设置持续集成构建以确保这确实发生的最佳方法是什么?如果有人将代码提交或合并到主存储库中,我们希望构建失败,警报响起,并且可能恢复提交/合并,而不使用给定授权密钥列表中的 PGP 密钥对其进行签名。

我们正在使用 github,所以我想知道 github hooks 是否有帮助。我相信我们将 Jenkins 用于 CI,但这可能并不重要,因为它将是一个自定义脚本。

澄清一下:该项目接受来自开源开发人员的贡献,我们不会要求每个人都有 PGP 密钥。但是,在 github 中拥有合并权限的每个人必须拥有 PGP 密钥,而我建议的构建将验证这一点。合并提交本身将是 PGP 签名的,即使不是每个提交都是。

【问题讨论】:

标签: git github jenkins continuous-integration pgp


【解决方案1】:

更新(2021 年 4 月):

见“Flag unsigned commits with vigilant mode”:

为了提高对您贡献的真实性的安全性和信心,您可以在 GitHub.com 上标记归属于您但未由您签名的提交和标签。

启用警戒模式(现在提供测试版)后,归因于您的未签名提交会被标记为未验证徽章。
这可以提醒您和其他人注意潜在的真实性问题。

Git 提交的作者和提交者很容易被欺骗。
例如,有人可以推送声称来自您的提交,但实际上并非如此。 > 就像出示护照一样,提交者可以通过使用 GPG 或 S/MIME 密钥对其提交进行签名来增加对提交的信任。

现在,当您启用警惕模式时,如果提交属于您但未由您签名,则会标记提交。
如果有人试图欺骗您作为提交者或作者的身份,这会引起注意。启用警惕模式后,您的所有提交和标签都会标记为三种验证状态之一:已验证、部分验证或未验证。

自己试试吧!
首先,看看如何automatically sign your commits。
然后,在您的account settings 中启用警惕模式:

开始签署提交和标签后,请务必启用警惕模式。
启用后,您推送到 GitHub.com 的任何未签名提交或标签都将标记为“未验证”,包括过去的提交。

详细了解vigilant mode。


更新(2016 年 4 月)

见“GitHub GPG signature verification”:

从今天开始,GitHub 将在提交和标记被签名时向您显示。

当您查看已签名的提交或标签时,您将看到一个徽章,指示是否可以使用上传到 GitHub 的任何贡献者的 GPG 密钥来验证签名。
您可以通过访问keys settings page.


原始答案(2014 年 6 月)

根据您的编辑,您选择了论文“A Git Horror Story: Repository Integrity With Signed Commits”中的选项 2:

选项 #2 就像将 -S 参数传递给 git merge 一样简单。
如果合并是快进的(也就是说,所有提交都可以简单地应用在 HEAD 之上而无需任何合并),那么您需要使用 --no-ff 选项来强制合并提交。

然后制作a signed request-pull(如果commit.gpgsign is set 可以始终签名)可以将签名部分限制为仅作为贡献提交合并的提交(而不是两个分支之间的任何随机合并)。

有关该过程的更多详细信息:

因此,如果您的持续集成构建仅合并 request-pull(在 this test script 中使用),您可以检查这些特定提交是否已签名(如果未签名,则不要合并它们)。
此脚本是此类检查的示例:“check-commit-signature”。

【讨论】:

  • 谢谢。哇,我已经有一段时间没有在这里问任何东西了......或编码。
  • 不要忘记使用 Git 2.23 git config tag.gpgSign true,也可以签署标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 2021-07-23
  • 2011-02-01
  • 2020-03-03
相关资源
最近更新 更多