在企业环境中使用 x509 证书对 git 提交进行签名



我从文档中了解到,可以对 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 证书做到这一点,那就太好了?实施这样的事情需要什么以及需要什么?

GitHub 提供了一些有关指定签名密钥的有用说明,包括如何在 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才会允许您对任何内容进行签名。

这在 Git 2.19(2018 年第 3 季度(中应该更容易,因为"git tag -s"等现在有一些配置变量(gpg.format可以设置为"openpgp"或"x509",gpg.<format>.program用于指定使用什么程序来处理格式(以允许使用"gpgsm"使用 CMS 的 x.509 证书而不是 OpenPGP 通过 "gnupg"。

请参阅提交 53fc999(2018 年 7 月 20 日(、提交 1e7adb9、提交 b02f51b、提交 42149d7、提交 58af57e、提交 57a8dd7(2018 年 7 月 17 日(和 Henning Schild (henning-schild提交 1865a64(2018 年 7 月 18 日(。
(由Junio C Hamano -gitster- 合并于提交3ec5ebe,2018年8月15日(

这涉及以下更改:

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

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

gpg-interface:引入多种GPG格式的抽象

创建一个结构,用于保存受支持格式的格式详细信息。
此提交为引入更多格式做准备,这些格式可能使用其他程序并匹配其他签名。

GPG 接口:不再对键串 len 进行硬编码

gnupg确实会打印密钥 ID,后跟一个空格,签名者紧随其后。 在gpgsm中也使用相同的模式,但密钥长度将是40而不是16。

与其硬编码预期的长度,不如找到第一个空格并计算它。
在我们跳转到 found+17 之前,现在将忽略与预期格式不匹配的输入,该输入可能位于意外字符串末尾的后面。

最新更新