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

时间:2018-05-03 08:25:14

标签: git configuration certificate x509

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

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // Setting/replace toolbar as the ActionBar TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs); tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.tab0))); tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.tab1))); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

请参见commit 53fc999(2018年7月20日),commit 1e7adb9commit b02f51bcommit 42149d7commit 58af57ecommit 57a8dd7(2018年7月17日),和commit 1865a64Henning 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的确会打印密钥ID,后跟空格,然后是签名者。   gpgsm中也使用了相同的模式,但是密钥长度为40而不是16。

     

找到所需的第一个空格并进行计算,而不是对预期的长度进行硬编码。
  在跳转到found + 17之前,该格式与预期格式不匹配的输入现在将被忽略,该值可能在意外字符串的末尾。

答案 1 :(得分: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之前,您可能还需要导入根证书和任何中间证书。