Подпишите git commit с сертификатом x509 в корпоративной среде - PullRequest
0 голосов
/ 03 мая 2018

Из документации я узнал, что можно подписывать теги и коммиты git.

git config --global user.signingkey 0A46826A

Документы: https://git -scm.com / book / ru / v2 / Git-Tools-Signing-Your-Work

Это работает для GPG. Кто-нибудь делал что-то подобное с пользовательскими сертификатами X509?

Похоже, что GPG не совместима или взаимозаменяема с сертификатами x509 pki. Поскольку это в корпоративной среде, GPG не вариант.

Было бы замечательно, если бы кто-то мог поделиться своими мыслями или опытом, как это можно сделать с сертификатами x509? Что потребуется и что потребуется для реализации чего-то подобного?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

GitHub предоставляет некоторые полезные инструкции по указанию ключей подписи , включая способы подписи с использованием сертификатов X.509 с использованием smimesign в Windows и Mac.

Для 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 позволит вам что-либо подписать.

0 голосов
/ 19 августа 2018

Это должно быть проще с Git 2.19 (Q3 2018), так как "git tag -s" и т. Д. Теперь имеют несколько переменных конфигурации (gpg.format, которые могут быть установлены на "openpgp" или "x509", и gpg.<format>.program, который используется, чтобы указать, какую программу использовать для работы с форматом), чтобы разрешить использование сертификатов x.509 с CMS через "gpgsm" вместо openpgp через "gnupg".

См. коммит 53fc999 (20 июля 2018 г.), коммит 1e7adb9 , коммит b02f51b , коммит 42149d7 , коммит 58af57e , коммит 57a8dd7 (17 июля 2018 г.) и коммит 1865a64 (18 июля 2018 г.) Хеннингом Шильдом (henning-schild) .
(Объединено с Junio ​​C Hamano - gitster - в коммит 3ec5ebe , 15 августа 2018 г.)

Это включало такие изменения, как:

gpg-interface: добавить новый конфиг, чтобы выбрать, как подписать коммит

Добавить «gpg.format», где пользователь может указать, какой тип подписи использовать для коммитов.

gpg-interface: ввести абстракцию для нескольких форматов gpg

Создайте структуру, содержащую сведения о формате для поддерживаемых форматов.
Этот коммит готовит к внедрению большего количества форматов, которые могут использовать другие программы и соответствовать другим сигнатурам.

gpg-интерфейс: больше не кодировать строку ключей len

gnupg печатает идентификатор ключа, за которым следует пробел, а затем подписывающее лицо. Тот же шаблон также используется в gpgsm, но здесь длина ключа будет 40 вместо 16.

Вместо жесткого кодирования ожидаемой длины найдите первый пробел и вычислите его.
Ввод, который не соответствует ожидаемому формату, теперь будет игнорироваться, прежде чем мы перейдем к найденному + 17, который мог находиться за концом неожиданной строки.

...