GPG-подпись
GPG (GNU Privacy Guard) подписи предоставляют безопасный метод подтверждения подлинности и целостности данных. При помощи GPG подписей можно удостовериться, что данные, такие как коммиты в системе управления версиями Git, были созданы указанным автором и не были изменены после создания. Это особенно важно в контексте разработки программного обеспечения, где необходимо подтверждать авторство изменений кода и защищать его от несанкционированных модификаций.
Установка
Для корректной работы GPG необходимо загрузить программный пакет gpg1
Перейдите на официальный сайт GnuPG и скачайте установочный файл для Windows: GnuPG for Windows.
sudo apt install gnupg1
- Установите Homebrew
- Используйте Homebrew для установки:
brew install gnupg1
Проверка установки
Убедиться в том, что утилита gpg1
была установлена можно при помощи команды:
gpg --version
Генерации GPG-ключа
Для генерации GPG-ключа необходимо выполнить команду gpg1 --gen-key
в терминале и указать набор входных параметров. Рекомендуется использовать следующие параметры:
- Тип ключа: RSA (по умолчанию).
- Длина ключа: 2048 (по умолчанию).
- Срок действия: устанавливается на усмотрение пользователя, возможно оставить пустым для генерации ключа без срока действия.
- Личные данные: в качестве настоящего имени необходимо указать имя пользователя GitFlic, например
adminuser
. В качестве адреса электронной почты необходимо указать почту пользователя GitFlic, напримерadminuser@admin.local
. - Комментарий: заполняется на усмотрение пользователя
- Пароль: потребуется при дальнейшей подписи коммитов, возможно оставить пустым для генерации ключа без пароля.
После ввода всех параметров, ключ будет сгенерирован. Информация о GPG-ключе будет отображена в терминале.
Выбор ключа для подписи
После создания ключа необходимо получить его отпечаток (FINGERPRINT
) для указания его в git config
. Обычно после создания ключа он отображается в общей информации. Скопируйте его для дальнейших действий, удалив все пробелы, если они есть.
Отпечаток ключа
Если вы пропустили на одном из шагов явно отображенный FINGERPRINT
, необходимо выполнить следующую команду для его получения
gpg1 --fingerprint
В git config
необходимо указать следующие параметры, выполнив перечисленные ниже команды в терминале:
-
git config gpg.program gpg1
-
git config --global user.signingkey FINGERPRINT
Вместо
FINGERPRINT
вставьте отпечаток вашего GPG-ключа и выполните команду. -
git config --global user.name userAlias
Вместо
userAlias
необходимо указать имя пользователя GitFlic. Имя пользователя должно совпадать с тем, которое было указано при генерации GPG-ключа. -
git config --global user.email userEmail
Вместо
userEmail
необходимо указать почту пользователя GitFlic. Почта пользователя должна совпадать с той, которая была указана при генерации GPG-ключа.
Далее необходимо скопировать публичный GPG-ключ, для его вывода выполните команду:
gpg1 --armor --export your@mail.org
или gpg1 --armor --export FINGERPRINT
Полученный публичный ключ необходимо сохранить в Настройках профиля -> Ключи
Ключи с несколькими владельцами
Обратите внимание, запрещено использовать ключи с двумя и более владельцами.
Подключи
GitFlic поддерживает работу с подключами. Для начала необходимо получить отпечаток подключа:
gpg1 --list-secret-keys --with-subkey-fingerprint
Укажите отпечаток подключа в git config
:
git config --global user.signingkey FINGERPRINT
Далее необходимо скопировать сгенерированный GPG-ключ. Выполните команду:
gpg1 --armor --export FINGERPRINT
Полученный публичный ключ необходимо сохранить в Настройках профиля -> Ключи
Использование GPG-подписи
Для подписания коммита ранее созданным ключом используется команда git commit -S -m "commit message"
, где -S параметр, который дает указание git подписать ваш коммит GPG-ключом. После его выполнения потребуется ввести пароль от GPG-ключа для подписи коммита.
Для автоматической подписи коммитов воспользуйтесь командой: git config --global commit.gpgSign true
Подпись коммитов, сделанных через веб-интерфейс
Начиная с версии GitFlic 4.2.0, все коммиты, сделанные через веб-интерфейс, будут подписаны автоматически сгенерированным GPG ключом. Информация о данном ключе хранится в панели администратора.
Когда все действия будут выполнены - в интерфейсе сервиса на коммитах будет отметка "Верифицирован"
Если вы неверно связали GPG-ключ и используемый профиль, вы увидите метку "Неверифицирован", при нажатии на нее вы получите более подробную информацию для исправления связи.
Если коммит подписан ключем, который был удален из профиля пользователя или его срок действия истек, то будет отображаться метка "Истек"