Думаю многие видели на GitHub коммиты со значком Verified:
В этой статье я расскажу как подписывать коммиты. Методы, описанные в статье подходят как для GitHub, так и для GitLab, а что касается клиентов, то коммиты будут подписываться и в GitHub Desktop и в TortoiseGit и в других графических приложениях. Сразу отмечу, что статья предназначена для пользователей Windows.
Если вы хотите максимально быстро настроить подпись коммитов – читайте первую часть статьи. А если вам интересны и другие детали, то можете прочитать остальное.
GitHub Desktop – подписываем коммиты (быстрая инструкция)
Подразумевается, что у вас уже установлен GitHub Desktop.
- Скачиваем и устанавливаем GPG (выбираем Simple installer for the current GnuPG)
- Сложностей в установке не возникнет
- Скачиваем и устанавливаем Git for Windows
- выбираете подходящие вам параметры
- выбираете используемый вами редактор, например Notepad++
- выбираете название ветки по умолчанию (как выбирали в Githib Desktop)
- далее оставляем пункт помеченный как Recommended
- далее можно все оставить по умолчанию или изменить на ваш вкус
- по окончанию установки, рекомендую сразу поставить галочку Launch Git Bash
Далее мы будем работать в Git Bash. Если вы не поставили галочку для его запуска, то можете найти его в меню Пуск -> Все программы -> Git.
Для генерации ключей пишем:
gpg --full-generate-key
Далее:
- Вводим 1
- Вводим 4096
- Вводим срок действия ключа в требуемом формате (там будет подсказка) или 0 для бессрочного ключа
- Далее вас попросят ввести Real name и Email – их нужно вводить строго те же, которыми вы подписываетесь в коммитах
- Далее вас попросят ввести пароль для ключа во всплывающем окне Pinentry – его вы потом будете вводить каждый раз, когда делаете коммит
Сразу скажу, я пробовал создать ключ без пароля. Тогда Pinentry выдает такое предупреждение:
И ключ в общем-то создается. Но проблема в том, что GitHub Desktop почему-то отказывается с ним работать и при попытке закоммитить изменения в любом репозитории он выдает ошибку. Работает только с ключами, имеющими пароль.
Продолжим:
- Далее необходимо просто двигать указатель мыши по экрану (или набирать что-то на клавиатуре) для успешной генерации ключа
- Все, ключ сгенерирован.
Визуально процесс выглядит вот так:
Далее включаем подпись коммитов в конфиге Git (все там же, в Git Bash):
git config --global user.signingkey KEY_EMAIL
Вместо KEY_EMAIL укажите email который вписали при создании ключа.
git config --global commit.gpgsign true
git config --global gpg.program $(which gpg)
Далее экспортируем ключ:
gpg --armor --export KEY_EMAIL
Выделяем и копируем из Git Bash ваш ключ вместе с заголовками блоков, т.е. скопированный ключ должен начинаться с -----BEGIN PGP PUBLIC KEY BLOCK-----
и заканчиваться -----END PGP PUBLIC KEY BLOCK-----
Осталось только добавить ключ на GitHub в этом разделе. Нажимаете New GPG key, вставляете ключ и придумываете ему название.
После этого можете делать коммиты в GitHub Desktop и у вас будет появляться такое всплывающее окно:
Тут вы указываете пароль, который указали при создании ключа и все – подписанный коммит готов.
Дополнительная информация для тех, кому будет интересно.
Экспорт и импорт ключей
Если вам понадобится экспортировать ключ в файл, чтобы можно было в будущем импортировать его, например после переустановки Windows, то открываем Git Bash или обычную командную строку Windows и пишем:
gpg --armor --export KEY_EMAIL > git.asc
gpg --armor --export-secret-key KEY_EMAIL > git_secret.asc
Вместо KEY_EMAIL укажите email, который вписывали при создании ключа или же идентификатор ключа, который можно получить, открыв список ключей:
gpg -k
Файлы сохранятся в папке вашего пользователя, например C:\Users\Alexell
Чтобы импортировать ключ в gpg, понадобится следующая команда:
gpg --import git_secret.asc
Только здесь нужно указать полный путь к файлу с приватным ключом.
Графический интерфейс, подпись и шифрование файлов и писем
Если вам больше нравится графический интерфейс и вы хотите получить больше возможностей, то вместо простого GPG вы можете установить пакет Gpg4win.
В процессе установки вам нужно будет выбрать необходимые приложения:
Менеджер ключей с графическим интерфейсом. Можно выбрать либо GPA, либо Kleopatra, я рекомендую последний. Kleopatra имеет русский язык и выглядит вот так:
GpgOL – дополнение, которое позволит вам подписывать письма в Microsoft Outlook, если вы конечно пользуетесь им. Будет добавлен такой пункт в меню:
Если выбрать установку оболочки GpgEX, то в контекстное меню Windows будет добавлено меню, позволяющее подписывать и шифровать файлы.
На этом я заканчиваю статью и желаю всем успехов с подписью коммитов или файлов.