Верификация коммитов 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.

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие