在企业环境中使用x509证书签署git commit

问题描述 投票:3回答:2

我从文档中了解到可以签署git标签和提交。

git config --global user.signingkey 0A46826A

文件:https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work

这适用于GPG。有人用X509用户证书做过这样的事吗?

看起来GPG与x509 pki证书不兼容或不可互换。由于这是在企业环境中,因此GPG不是一种选择。

如果有人可以分享关于如何使用x509证书进行思考或体验的话会很棒吗?需要什么以及实现这样的东西需要什么?

git configuration certificate x509
2个回答
3
投票

使用Git 2.19(Q3 2018)应该会更容易,因为“git tag -s”等现在有一些配置变量(可以设置为“gpg.format”或“openpgp”的x509,以及用于指定要使用的程序的gpg.<format>.program)处理格式)允许通过“gpgsm”使用CMS的x.509证书而不是通过“gnupg”使用openpgp。

参见commit 53fc999commit 1e7adb9(2018年7月20日),commit b02f51bcommit 42149d7commit 58af57ecommit 57a8dd7commit 1865a64(2018年7月17日)和Henning Schild (henning-schild)(2018年7月18日)。 (由Junio C Hamano -- gitster --合并于commit 3ec5ebe,2018年8月15日)

这包括以下变化:

gpg-interface:添加新配置以选择如何签署提交

添加“gpg.format”,用户可以在其中指定要用于提交的签名类型。

gpg-interface:介绍多种gpg格式的抽象

创建一个结构,其中包含支持的格式的格式详细信息。 此提交准备引入更多格式,可能使用其他程序并匹配其他签名。

gpg-interface:不再对密钥字符串len进行硬编码

gnupg确实打印了keyid,接着是一个空格,然后是签名者。在gpgsm中也使用相同的模式,但密钥长度为40而不是16。

而不是硬编码预期的长度,找到第一个空格并计算它。 现在,在我们跳转到找到+17之前可能已经在意外字符串结尾之后,将忽略与预期格式不匹配的输入。


1
投票

GitHub提供了一些有关specifying signing keys的有用说明,包括如何在Windows和Mac上使用smimesign使用X.509证书进行签名。

对于Git版本2.19和更新版本

$ git config --global gpg.x509.program smimesign
$ git config --global gpg.format x509

对于Git版本2.18及更早版本

$ git config --global gpg.program smimesign

在Linux上,您可以使用gpgme代替。使用gpgme --import cert.p12添加证书。在gpgme允许您签署任何内容之前,您可能还需要导入根和任何中间证书。

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