🔐Подписание и проверка коммитов Git в командной строке и на GitHub |

🔐Подписание и проверка коммитов Git в командной строке и на GitHub

Мануал

Мы рассмотрим подписание коммитов и тегов ключом 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 <your GPG email address>
gpg --send-keys <your public GPG key id from above>

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

Импорт открытого ключа GPG другого пользователя из файла

Пусть они выполнят это, чтобы экспортировать свой открытый ключ GPG и отправить его вам.

gpg --export --armor --out theirname.gpg.pub <их адрес электронной почты 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 требует больших усилий.

Многие крупные проекты так и поступают.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий