
Мы рассмотрим подписание коммитов и тегов ключом GPG, а также отправку и получение открытых ключей GPG на сервер ключей для проверки.
Шпаргалка
Неподписанный коммит:
git commit -m "Unsigned commit" git log
Подписанный коммит:
Если ваши адреса электронной почты git и gpg-ключа отличаются, это приведет к неудаче, пока вы не настроите свой git signingkey
git commit -S -m "Signed commit" git log --show-signature
Неподписанный тег:
git tag lightweight-tag git show lightweight-tag git tag -am "" unsigned-annotated-tag git show unsigned-annotated-tag
Подписанный тег:
git tag -sm "" signed-tag git show signed-tag
Переопределение параметров конфигурации автоподписания:
git commit --no-gpg-sign -m "Unsigned commit" git tag --no-sign unsigned-lightweight-tag
Импорт открытого ключа GPG другого пользователя с сервера ключей
С середины 2021 года стандартный сервер ключей gpg был отключен от сети, есть несколько, которые мы можем выбрать в качестве альтернативы на основе https://en.wikipedia.org/wiki/Key_server_(cryptographic).
Можно использовать keyserver.ubuntu.com в качестве нового сервера по умолчанию.
Он обновляется довольно быстро и вряд ли исчезнет.
Мы можем либо вставить –keyserver keyserver.ubuntu.com в каждую команду, обращающуюся к серверу ключей, либо изменить наш ~/.gnupg/gpg.conf, найдя некомментированную строку keyserver hkp://keys.gnupg.net и заменив ее на keyserver hkp://keyserver.ubuntu.com.
Мы выбрали подход с конфигурацией и рекомендую сделать то же самое.
Таким образом, все приведенные ниже команды продолжат работать без изменений, и вам не нужно будет помнить об использовании пользовательского сервера каждый раз, когда вы используете gpg.
Изменение конфигурационного файла вступает в силу сразу.
Вам не нужно перезапустить агент.
gpg --search-keys itsecforu@gmail.com gpg --recv-keys D2AD01A3FC57C925 При желании можно уделить ключ. gpg --delete-keys itsecforu@gmail.com
Отправим свой открытый ключ GPG на сервер ключей
gpg --list-keys --keyid-format LONG gpg --send-keys
Это полезно делать, если вы хотите обменяться с кем-то ключами, и вы должны делать это каждый раз, когда меняете свой ключ, например, обновляете дату его истечения.
Импорт открытого ключа GPG другого пользователя из файла
Пусть они выполнят это, чтобы экспортировать свой открытый ключ GPG и отправить его вам.
Теперь вы можете импортировать его следующим образом.
[/simterm] $ gpg –import theirname.gpg.pub[/simterm]
Проверка подписей при мердже ветки с помощью git
Предполагается, что вы уже изменили свой .gitconfig для автоподписания коммитов.
git checkout -b feaure-something touch somefile && git add -A && git commit -m “Hello world” git checkout master git merge --verify-signatures feature-something
На GitHub вы также можете перейти в настройки settings -> branches -> branch protection rules, требующее подписанных коммитов в 1 или более ветках.
Таким образом, вы сможете обеспечить соблюдение этого правила на уровне pr в GitHub.
Имейте в виду, что если вы сделаете все вышеописанное на GitHub, то у вас может быть меньше участников, потому что создание пары ключей GPG требует больших усилий.
Многие крупные проекты так и поступают.