Верификация коммитов git с помощью GPG
Настроим верификацию коммитов git с помощью GPG.
Содержание
1 Верификация коммитов с помощью PGP
- Как настроить PGP-подпись коммитов с помощью
gpg
.
1.1 Создание ключа
Генерируем ключ
gpg --full-generate-key
- Из предложенных опций выбираем:
- тип RSA and RSA;
- размер 4096;
- выберите срок действия; значение по умолчанию — 0 (срок действия не истекает никогда).
- GPG запросит личную информацию, которая сохранится в ключе:
- Имя (не менее 5 символов).
- Адрес электронной почты.
- При вводе email убедитесь, что он соответствует адресу, используемому на GitHub.
- Комментарий. Можно ввести что угодно или нажать клавишу ввода, чтобы оставить это поле пустым.
- Из предложенных опций выбираем:
1.2 Экспорт ключа
Выводим список ключей и копируем отпечаток приватного ключа:
gpg --list-secret-keys --keyid-format LONG
- Отпечаток ключа — это последовательность байтов, используемая для идентификации более длинного, по сравнению с самим отпечатком ключа.
- Формат строки:
sec Алгоритм/Отпечаток_ключа Дата_создания [Флаги] [Годен_до] ID_ключа
Экспортируем ключ в формате ASCII по его отпечатку:
gpg --armor --export <PGP Fingerprint>
1.3 Добавление GPG ключа в GitHub
- Копируем ключ и добавляем его в настройках профиля на GitHub (или GitLab).
- Cкопируйте ваш сгенерированный PGP ключ в буфер обмена:
gpg --armor --export <PGP Fingerprint> | xclip -sel clip
- Перейдите в настройки GitHub (https://github.com/settings/keys), нажмите на кнопку New GPG key и вставьте полученный ключ в поле ввода.
1.4 Подписывание коммитов git
- Подпись коммитов при работе через терминал:
git commit -a -S -m 'your commit message'
- Флаг
-S
означает создание подписанного коммита. При этом может потребоваться ввод кодовой фразы, заданной при генерации GPG-ключа.
1.5 Настройка автоматических подписей коммитов git
- Используя введёный email, укажите Git применять его при подписи коммитов:
git config --global user.signingkey <PGP Fingerprint> git config --global commit.gpgsign true git config --global gpg.program $(which gpg)
2 Использование Keybase
- Для генерации и хранения GPG ключей можно использовать Keybase https://keybase.io/.
- После того, как вы зарегистрируетесь в Keybase, зайдите в терминал и запустите следующие команды:
keybase login
2.1 Генерация GPG ключа
- Создайте новый GPG ключ, используя ваше настоящее имя и email, сохраненный в GitHub:
keybase pgp gen
- Просмотр списка ключей:
keybase pgp list
2.2 Добавление GPG ключа в GitHub
- Cкопируйте ваш сгенерированный PGP ключ:
keybase pgp export | xclip -i
- Перейдите в настройки GitHub (https://github.com/settings/keys), нажмите на кнопку New GPG key и вставьте полученный ключ в поле ввода.
3 Проверка коммитов в Git
- GitHub и GitLab будут показывать значок Verified рядом с вашими новыми коммитами.
3.1 Режим бдительности (vigilant mode)
- На GitHub есть настройка vigilant mode.
- Все неподписанные коммиты будут явно помечены как Unverified.
- Включается это в настройках в разделе SSH and GPG keys. Установите метку на Flag unsigned commits as unverified.