diff --git a/src/GIT-GPG-sign.md b/src/GIT-GPG-sign.md new file mode 100644 index 0000000..6b2d094 --- /dev/null +++ b/src/GIT-GPG-sign.md @@ -0,0 +1,131 @@ +# GPG подпись + + + + +GPG ключи по сравнению с SSH ключами имеют более развитый функционал. +- настройка специализации ключа (шифрование, подпись, авторизация, создание подключей); +- отзыв ранее выпущенных ключей; +- настройка срока действия ключей с возможностью продления в будущем; +- привязка ключей к имени пользователя и почте; +- возможность загрузки публичных ключей на сервера ключей; + +Под Windows утилита gpg идет вместе с git. Так что можно работать сразу после установки git. + +Все свои файлы gpg хранит в `~/.gnupg/` + +Полезные команды: +``` +gpg -k --keyid-format=long # Посмотреть публичные ключи +gpg -K --keyid-format=long # Посмотреть приватные ключи +gpg --full-generate-key # Генерация пары ключей +gpg -a --export # Экспорт публичного ключа +gpg -a --export-secret-keys # Экспорт секретного ключа +gpg --import # Импорт ключа +gpg --delete-key # Удаление публичного ключа +gpg --delete-secrete-key # Удаление секретного ключа +git config --global user.signingkey +``` + +Обозначения типов ключей: +``` +sec - secret primary key (секретный основной ключ) +pub - public primary key (публичный основной ключ) +ssb - secret sub-key (секретный сабключ) +sub - public sub-key (публичный сабключ) +> - ключ есть на карте +# - нет секретного ключа, только заглушка для сабключа +``` + +Полезно добавить в конфиг: +``` +echo "keyid-format LONG" >> ~/.gnupg/gpg.conf +``` + +## Генерация ключей + +Создаем основной (primary) ключ: +``` +gpg --expert --full-generate-key +``` + +Будут показаны следующие варианты: +``` +RSA and RSA - создание основного и сабключа для шифрования +RSA (sign only) - создание только основного ключа +``` +Выбираем RSA (sign only). Этот ключ нужен для генерации других сабключей. + +gpg –expert –edit-key + +## Генерация сабключей + + +Для генерации сабключей заходим в консоль gpg: +``` +gpg --edit-key [keyid] +> addkey +... +> save +``` +`?` - список все комманд +`addkey` - добавить новый сабключ +`save` - не забываем сохранить результаты перед выходом + + +gpg -K --keyid-format=long + +Показать ключ для копирования в репозиторий +gpg -a --export AEBB0598F42201E3 + +## Экспорт ключей + +``` +gpg -a --export-secret-key [keyid] # Экспорт основного ключа +gpg -a --export-secret-subkeys [keyid] # Экспорт сабключей +gpg -a --export [keyid] # Экспорт публичных ключей + +gpg -a --export-secret-key ARNik > master.key +gpg -a --export-secret-subkeys ARNik > subkeys.key +gpg -a --export ARNik > public.key +``` + +## Сохранение на аппаратный ключ + + + +gpg --card-status + +``` +gpg --edit-key [user-id] +> keytocard +``` + +gpg --delete-secret-keys ARNik + +## Настройка подписи коммитов в git + +Подписать последний коммит +git commit --amend --no-edit -S + +Также можно добавить соответствующий элиас в .ginconfig +sign = commit --amend --no-edit -S + + + + + + + + + + + + + + + + + + +