Генерация GPG ключа
Подписываем GPG ключом коммиты в Git
Статья актуальна для Linux. Для Windows всё примерно то же самое, только предварительно нужно поставить программу gpg.
Ну вот решили, например: «Пора бы уже подписывать коммиты в гите. Тоже хочу зелёный значок Verified». Тогда надо делать. Всего 3 действия (коротко), ниже — то же самое с объяснениями:
Генерация GPG‑ключа
bashgpg2 --full-gen-keyЗагрузка открытого ключа в GitLab/GitHub
bashgpg2 --list-secret-keys --keyid-format LONG i@mbaev.comответ будет что-то вроде
textsec rsa4096/30F2B65B9246B6CA 2019-04-12 [SC] uid [ абсолютно ] Maksim Baev <my@email.com> ssb rsa4096/B7ABC0813E4028C0 2019-04-12 [E]дальше экспортируем
bashgpg2 --armor --export 30F2B65B9246B6CAПоследняя команда выдаст публичный сертификат, вставляем его в GitLab или GitHub.
Объяснение Git'у, чем подписывать коммиты
bashgit config --global user.signingkey 30F2B65B9246B6CA git config --global gpg.program gpg2 git config --global commit.gpgsign true
1. Генерация ключа
Потребуется:
- адрес e‑mail;
- сильный пароль;
- своё имя.
Емейл проверяться не будет, но он должен совпадать с тем, что вы используете в Git'е для авторства коммитов. Он же должен быть зарегистрирован в GitLab/GitHub.
Желательно использовать gpg2:
which gpg2Если появился какой‑то путь — всё ок. Генерируем 4‑килобайтный ключ:
gpg2 --full-gen-keyДальше диалог примерно такой (комментарии после #):
Выберите тип ключа:
(1) RSA и RSA (по умолчанию)
(2) DSA и Elgamal
(3) DSA (только для подписи)
(4) RSA (только для подписи)
Ваш выбор? 1 # тип ключа
длина ключей RSA может быть от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048) 4096 # длина ключа
Срок действия ключа? (0) # просто жмём Enter — без ограничения
Все верно? (y/N) y
Ваше полное имя: Maksim Baev # полное имя
Адрес электронной почты: i@mbaev.com # e‑mail, под которым уходят коммиты
Комментарий:
...
Сменить (N)Имя, (C)Комментарий, (E)Адрес или (O)Принять/(Q)Выход? OПосле этого gpg будет какое‑то время собирать энтропию (двигаем мышкой, печатаем и т. п.) и сгенерирует пару ключей — публичный и приватный.
2. Загрузка ключа в GitLab / GitHub
Ищем идентификатор сгенерированного ключа:
gpg2 --list-secret-keys --keyid-format LONG i@mbaev.comПример вывода:
sec rsa4096/30F2B65B9246B6CA 2019-04-12 [SC]
uid [ абсолютно ] Maksim Baev <i@mbaev.com>
ssb rsa4096/B7ABC0813E4028C0 2019-04-12 [E]ID ключа: 30F2B65B9246B6CA.
Экспортируем публичный ключ:
gpg2 --armor --export 30F2B65B9246B6CAВывод вида:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
...
-----END PGP PUBLIC KEY BLOCK-----Копируем этот блок и вставляем на страницу GPG‑ключей в GitLab, GitHub или другом сервисе управления репозиториями.
3. Объясняем Git'у, чем подписывать коммиты
Сообщаем Git'у, какой ключ использовать:
git config --global user.signingkey 30F2B65B9246B6CAУказываем, что нужно использовать gpg2:
git config --global gpg.program gpg2Включаем подпись всех коммитов по умолчанию:
git config --global commit.gpgsign trueПосле этого новые коммиты будут подписываться GPG‑ключом, а в интерфейсе GitLab/GitHub напротив них появится зелёный значок Verified.
