使用GPG签名提交

注意:注意:术语GPG用于所有与OpenPGP/PGP/GPG相关的材料和实现。

  • 介绍了在GitLab 9.5中。
  • 在GitLab 10.1中增加了子键支持。

当使用GPG密钥签名时,GitLab可以显示提交是否经过验证。您所需要做的就是在您的配置文件设置中上传公共GPG密钥。

目前尚不支持GPG验证标记。

让我们从GPG开始

下面是一些帮助你开始使用GPG的指南:

GitLab如何处理GPG

GitLab使用自己的密匙环来验证GPG签名。它不访问任何公钥服务器。

为了在GitLab上验证提交,需要将相应的公钥上传到GitLab。要验证签名,需要满足三个条件:

  1. 公钥需要添加到您的GitLab帐户
  2. GPG密钥中的一封邮件匹配了验证您在GitLab中使用的电子邮件地址
  3. 提交者的电子邮件与通过gpg密钥验证的电子邮件相匹配

生成GPG密钥

注:

  • 如果你的操作系统有gpg2安装,替换gpggpg2在以下命令中。
  • 如果Git正在使用gpg你会得到这样的错误密钥不可用Gpg:签名失败:密钥不可用,执行以下命令切换到gpg2Git配置——global gpg。程序gpg2

如果你还没有GPG密钥,下面的步骤将帮助你开始:

  1. 安装GPG对于您的操作系统
  2. 使用以下命令生成私钥/公钥对:

    gpg——full-gen-key

    这将产生一系列的问题。

  3. 第一个问题是可以使用哪种算法。选择您想要的类型或按输入选择默认密码(RSA和RSA):

    请选择您需要的密钥类型:(1) RSA和RSA(默认)(2) DSA和Elgamal(3) DSA(仅供签署)(4) RSA(仅限签名)你的选择吗?1
  4. 下一个问题是键的长度。我们建议选择最高的值,即4096

    RSA密钥长度可能在1024到4096位之间。你想要多大的键?(2048) 4096请求的密钥大小是4096位
  5. 接下来,您需要指定密钥的有效期。这是主观的,你可以使用默认值永不过期:

    请指定密钥的有效期。0 = key不会过期 = key在n天内过期w = key将在n周内过期m = key在n个月内过期y = key在n年内过期密钥是否有效?(0) 0密钥根本不会过期
  6. 通过输入确认你给出的答案是正确的y

    这对吗?(y / N) y
  7. 输入您的真实姓名,与此键相关联的电子邮件地址(应与您在GitLab中使用的验证电子邮件地址相匹配)和可选的评论(按输入跳过):

    GnuPG需要构造一个用户ID来识别您的密钥。真名:机器人先生邮箱:mr@robot.sh备注:您选择了这个USER-ID:“机器人先生更改(N)ame, (C) comment, (E)mail or (O)kay/(Q)uit?O
  8. 在被询问时选择一个强密码,并输入两次以确认。

  9. 使用以下命令列出刚刚创建的私有GPG密钥:

    gpg——list-secret-keys——keyid-format LONG mr@robot.sh

    取代mr@robot.sh上面输入的电子邮件地址。

  10. 复制以开头的GPG密钥ID证券交易委员会.在下面的例子中,这是30 f2b65b9246b6ca

    第rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CAuid [ultimate] Mr. Robot  .ssb rsa4096/B7ABC0813E4028C0 2017-08-18 [E]
  11. 导出该ID的公钥(替换上一步中的密钥ID):

    gpg—armor—export 30F2B65B9246B6CA
  12. 最后,复制公钥和将其添加到您的配置文件设置中

向您的帐户添加GPG密钥

注意:一旦你添加了一个键,你就不能编辑它,只能删除它。如果粘贴不起作用,你将不得不删除有问题的键并重新添加它。

您可以在配置文件的设置中添加GPG密钥:

  1. 在右上角,点击你的头像,进入你的设置

    设置下拉

  2. 导航到GPG密钥标签和粘贴公共在“钥匙”框中输入钥匙。

    粘贴GPG公钥

  3. 最后,点击添加关键将其添加到GitLab。你将能够看到它的指纹,相应的电子邮件地址和创建日期。

    GPG键单页

将GPG密钥与Git关联

当你有创建您的GPG密钥而且加到你的账户里了,是时候告诉Git使用哪个键了。

  1. 使用以下命令列出刚刚创建的私有GPG密钥:

    gpg——list-secret-keys——keyid-format LONG mr@robot.sh

    取代mr@robot.sh上面输入的电子邮件地址。

  2. 复制以开头的GPG密钥ID证券交易委员会.在下面的例子中,这是30 f2b65b9246b6ca

    第rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CAuid [ultimate] Mr. Robot  .ssb rsa4096/B7ABC0813E4028C0 2017-08-18 [E]
  3. 告诉Git使用该密钥对提交进行签名:

    Git配置——全局用户。signingkey 30 f2b65b9246b6ca

    取代30 f2b65b9246b6ca使用您的GPG密钥ID。

签署提交

当你有创建您的GPG密钥而且加到你的账户里了,你可以开始签名你的提交:

  1. 像以前一样提交,唯一的区别是添加了- s国旗:

    “My commit msg”
  2. 在询问时输入您的GPG密钥的密码短语。

  3. 推到GitLab并检查你的提交验证

如果你不想输入- s标记,你可以告诉Git自动为你的提交签名:

Git配置——全局提交。gpgsign真实

验证提交

  1. 在一个项目或合并请求,导航到提交选项卡。签名提交将显示一个包含“已验证”或“未验证”的徽章,这取决于GPG签名的验证状态。

    已签名提交和未签名提交

  2. 通过单击GPG徽章,将显示签名的详细信息。

    具有验证签名的签名提交

    具有验证签名的签名提交

撤销GPG密钥

撤销密钥unverifies已经签名的提交。使用此键验证的提交将变为未验证状态。一旦撤销该密钥,以后的提交也将保持未验证状态。如果您的密钥已被泄露,则应使用此操作。

撤销GPG密钥。

  1. 在右上角,点击你的头像,进入你的设置
  2. 导航到GPG密钥选项卡。
  3. 点击撤销除了你要删除的GPG密钥。

移除GPG密钥

移除密钥不验证已经签名的提交。使用此键验证的提交将保持验证状态。删除此键后,只有未推送的提交将保持未验证状态。要取消验证已签名的提交,您需要撤销关联的GPG密钥从你的账户里。

要从您的帐户中删除GPG密钥:

  1. 在右上角,点击你的头像,进入你的设置
  2. 导航到GPG密钥选项卡。
  3. 单击要删除的GPG键旁边的垃圾图标。
Baidu
map