使用GPG签名提交
注意:注意:术语GPG用于所有与OpenPGP/PGP/GPG相关的材料和实现。
- 介绍了在GitLab 9.5中。
- 在GitLab 10.1中增加了子键支持。
当使用GPG密钥签名时,GitLab可以显示提交是否经过验证。您所需要做的就是在您的配置文件设置中上传公共GPG密钥。
目前尚不支持GPG验证标记。
让我们从GPG开始
下面是一些帮助你开始使用GPG的指南:
GitLab如何处理GPG
GitLab使用自己的密匙环来验证GPG签名。它不访问任何公钥服务器。
为了在GitLab上验证提交,需要将相应的公钥上传到GitLab。要验证签名,需要满足三个条件:
- 公钥需要添加到您的GitLab帐户
- GPG密钥中的一封邮件匹配了验证您在GitLab中使用的电子邮件地址
- 提交者的电子邮件与通过gpg密钥验证的电子邮件相匹配
生成GPG密钥
注:
- 如果你的操作系统有
gpg2
安装,替换gpg
与gpg2
在以下命令中。- 如果Git正在使用
gpg
你会得到这样的错误密钥不可用
或Gpg:签名失败:密钥不可用
,执行以下命令切换到gpg2
:Git配置——global gpg。程序gpg2
如果你还没有GPG密钥,下面的步骤将帮助你开始:
- 安装GPG对于您的操作系统
使用以下命令生成私钥/公钥对:
gpg——full-gen-key
这将产生一系列的问题。
第一个问题是可以使用哪种算法。选择您想要的类型或按输入选择默认密码(RSA和RSA):
请选择您需要的密钥类型:(1) RSA和RSA(默认)(2) DSA和Elgamal(3) DSA(仅供签署)(4) RSA(仅限签名)你的选择吗?1
下一个问题是键的长度。我们建议选择最高的值,即
4096
:RSA密钥长度可能在1024到4096位之间。你想要多大的键?(2048) 4096请求的密钥大小是4096位
接下来,您需要指定密钥的有效期。这是主观的,你可以使用默认值永不过期:
请指定密钥的有效期。0 = key不会过期
= key在n天内过期 w = key将在n周内过期 m = key在n个月内过期 y = key在n年内过期 密钥是否有效?(0) 0密钥根本不会过期通过输入确认你给出的答案是正确的
y
:这对吗?(y / N) y
输入您的真实姓名,与此键相关联的电子邮件地址(应与您在GitLab中使用的验证电子邮件地址相匹配)和可选的评论(按输入跳过):
GnuPG需要构造一个用户ID来识别您的密钥。真名:机器人先生邮箱:mr@robot.sh备注:您选择了这个USER-ID:“机器人先生
” 更改(N)ame, (C) comment, (E)mail or (O)kay/(Q)uit?O在被询问时选择一个强密码,并输入两次以确认。
使用以下命令列出刚刚创建的私有GPG密钥:
gpg——list-secret-keys——keyid-format LONG mr@robot.sh
取代
mr@robot.sh
上面输入的电子邮件地址。复制以开头的GPG密钥ID
证券交易委员会
.在下面的例子中,这是30 f2b65b9246b6ca
:第rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CAuid [ultimate] Mr. Robot
. ssb rsa4096/B7ABC0813E4028C0 2017-08-18 [E]导出该ID的公钥(替换上一步中的密钥ID):
gpg—armor—export 30F2B65B9246B6CA
最后,复制公钥和将其添加到您的配置文件设置中
向您的帐户添加GPG密钥
注意:一旦你添加了一个键,你就不能编辑它,只能删除它。如果粘贴不起作用,你将不得不删除有问题的键并重新添加它。
您可以在配置文件的设置中添加GPG密钥:
将GPG密钥与Git关联
当你有创建您的GPG密钥而且加到你的账户里了,是时候告诉Git使用哪个键了。
使用以下命令列出刚刚创建的私有GPG密钥:
gpg——list-secret-keys——keyid-format LONG mr@robot.sh
取代
mr@robot.sh
上面输入的电子邮件地址。复制以开头的GPG密钥ID
证券交易委员会
.在下面的例子中,这是30 f2b65b9246b6ca
:第rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CAuid [ultimate] Mr. Robot
. ssb rsa4096/B7ABC0813E4028C0 2017-08-18 [E]告诉Git使用该密钥对提交进行签名:
Git配置——全局用户。signingkey 30 f2b65b9246b6ca
取代
30 f2b65b9246b6ca
使用您的GPG密钥ID。
签署提交
当你有创建您的GPG密钥而且加到你的账户里了,你可以开始签名你的提交:
像以前一样提交,唯一的区别是添加了
- s
国旗:“My commit msg”
在询问时输入您的GPG密钥的密码短语。
推到GitLab并检查你的提交验证.
如果你不想输入- s
标记,你可以告诉Git自动为你的提交签名:
Git配置——全局提交。gpgsign真实
验证提交
在一个项目或合并请求,导航到提交选项卡。签名提交将显示一个包含“已验证”或“未验证”的徽章,这取决于GPG签名的验证状态。
通过单击GPG徽章,将显示签名的详细信息。
撤销GPG密钥
撤销密钥unverifies已经签名的提交。使用此键验证的提交将变为未验证状态。一旦撤销该密钥,以后的提交也将保持未验证状态。如果您的密钥已被泄露,则应使用此操作。
撤销GPG密钥。
- 在右上角,点击你的头像,进入你的设置.
- 导航到GPG密钥选项卡。
- 点击撤销除了你要删除的GPG密钥。
移除GPG密钥
移除密钥不验证已经签名的提交。使用此键验证的提交将保持验证状态。删除此键后,只有未推送的提交将保持未验证状态。要取消验证已签名的提交,您需要撤销关联的GPG密钥从你的账户里。
要从您的帐户中删除GPG密钥:
- 在右上角,点击你的头像,进入你的设置.
- 导航到GPG密钥选项卡。
- 单击要删除的GPG键旁边的垃圾图标。