Думаю многие видели на GitHub коммиты со значком Verified:

Подписанные GPG ключом коммиты
Подписанные GPG ключом коммиты

В этой статье я расскажу как подписывать коммиты. Методы, описанные в статье подходят как для 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.

Для генерации ключей пишем:

Далее:

  • Вводим 1
  • Вводим 4096
  • Вводим срок действия ключа в требуемом формате (там будет подсказка) или 0 для бессрочного ключа
  • Далее вас попросят ввести Real name и Email - их нужно вводить строго те же, которыми вы подписываетесь в коммитах
  • Далее вас попросят ввести пароль для ключа во всплывающем окне Pinentry - его вы потом будете вводить каждый раз, когда делаете коммит

Сразу скажу, я пробовал создать ключ без пароля. Тогда Pinentry выдает такое предупреждение:

Pinentry - генерация ключа без пароля

И ключ в общем-то создается. Но проблема в том, что GitHub Desktop почему-то отказывается с ним работать и при попытке закоммитить изменения в любом репозитории он выдает ошибку. Работает только с ключами, имеющими пароль.

Продолжим:

  • Далее необходимо просто двигать указатель мыши по экрану (или набирать что-то на клавиатуре) для успешной генерации ключа
  • Все, ключ сгенерирован.

Визуально процесс выглядит вот так:

Генерация ключа GPG в Git Bash

Далее включаем подпись коммитов в конфиге Git (все там же, в Git Bash):

Вместо KEY_EMAIL укажите email который вписали при создании ключа.

Далее экспортируем ключ:

Выделяем и копируем из Git Bash ваш ключ вместе с заголовками блоков, т.е. скопированный ключ должен начинаться с -----BEGIN PGP PUBLIC KEY BLOCK----- и заканчиваться -----END PGP PUBLIC KEY BLOCK-----

Осталось только добавить ключ на GitHub в этом разделе. Нажимаете New GPG key, вставляете ключ и придумываете ему название.

После этого можете делать коммиты в GitHub Desktop и у вас будет появляться такое всплывающее окно:

подписываем коммиты
Окно запроса пароля ключа

Тут вы указываете пароль, который указали при создании ключа и все - подписанный коммит готов.

Дополнительная информация для тех, кому будет интересно.

Экспорт и импорт ключей

Если вам понадобится экспортировать ключ в файл, чтобы можно было в будущем импортировать его, например после переустановки Windows, то открываем Git Bash или обычную командную строку Windows и пишем:

Вместо KEY_EMAIL укажите email, который вписывали при создании ключа или же идентификатор ключа, который можно получить, открыв список ключей:

Файлы сохранятся в папке вашего пользователя, например C:\Users\Alexell

Чтобы импортировать ключ в gpg, понадобится следующая команда:

Только здесь нужно указать полный путь к файлу с приватным ключом.

Графический интерфейс, подпись и шифрование файлов и писем

Если вам больше нравится графический интерфейс и вы хотите получить больше возможностей, то вместо простого GPG вы можете установить пакет Gpg4win.

Установка Gpg4win
Установка Gpg4win

В процессе установки вам нужно будет выбрать необходимые приложения:

Менеджер ключей с графическим интерфейсом. Можно выбрать либо GPA, либо Kleopatra, я рекомендую последний. Kleopatra имеет русский язык и выглядит вот так:

Kleopatra

GpgOL - дополнение, которое позволит вам подписывать письма в Microsoft Outlook, если вы конечно пользуетесь им. Будет добавлен такой пункт в меню:

GpgOL в Microsoft Outlook
GpgOL в Microsoft Outlook

Если выбрать установку оболочки GpgEX, то в контекстное меню Windows будет добавлено меню, позволяющее подписывать и шифровать файлы.

GpgEX
GpgEX

На этом я заканчиваю статью и желаю всем успехов с подписью коммитов или файлов.