From f9318cf14fb629e7134b091395fb03b53e310104 Mon Sep 17 00:00:00 2001 From: ARNik Date: Fri, 16 Jan 2026 23:14:15 +0300 Subject: [PATCH] gpg key expire --- src/GIT-GPG-sign.md | 52 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/src/GIT-GPG-sign.md b/src/GIT-GPG-sign.md index 3050d33..7556b14 100644 --- a/src/GIT-GPG-sign.md +++ b/src/GIT-GPG-sign.md @@ -9,6 +9,7 @@ GPG ключи по сравнению с SSH ключами имеют боле - настройка срока действия ключей с возможностью продления в будущем; - привязка ключей к имени пользователя и почте; - возможность загрузки публичных ключей на сервера ключей; +- возможность хранения секретных ключей на аппаратном ключе который поддерживает стандарт OpenPGP Card (например Yubikey) Под Windows утилита gpg идет вместе с git. Так что можно работать сразу после установки git. @@ -81,10 +82,9 @@ gpg --expert --edit-key [id] Прежде удалять мастер ключ или переносить сабключи на карту, необходимо сделать бекап (экспорт) всей нашей работы. ``` -gpg -a --export-secret-key [id] > master.key # Экспорт основного ключа +gpg -a --export-secret-key [id] > master.key # Экспорт мастер ключа (вместе с сабключами) gpg -a --export-secret-subkeys [id] > subkeys.key # Экспорт сабключей -gpg -a --export [id] public.key # Экспорт публичных ключей - +gpg -a --export [id] > public.key # Экспорт общего публичного ключа ``` ## Сохранение на аппаратный ключ @@ -108,11 +108,11 @@ gpg --edit-key [id] # входим в режим редактиро ## Удаление секретных ключей -Удалем секретный ключ: +Удаляем секретные ключи: ``` -gpg --delete-secret-keys [id] +gpg --delete-secret-keys [master-key-id] ``` -Удалятся все секретные ключи. Для того чтобы gpg понял что секретные ключи находятся на карте выполняем: +Для того чтобы gpg понял что секретные ключи находятся на карте выполняем: ``` gpg --card-status ``` @@ -127,7 +127,7 @@ https://keys.openpgp.org/ Ключи лучше загружать через web-интерфес чтобы получить ссылку для верификации почты. -После того как public ключ загружен на сервер, можно добавить URL ключа в настройки карты. Тогда будет возможно настравить новый компьютер совсем просто: +После того как public ключ загружен на сервер, можно добавить URL ключа в настройки карты. Тогда будет возможно настраивать новый компьютер совсем просто: ``` gpg --card-edit # Заходим в настройки карты > fetch # Скачиваем public ключ @@ -160,8 +160,7 @@ signoff = commit --amend --no-edit -s Если удалить не получается то надо убить процессы: ``` -gpgconf --kill gpg-agent -gpgconf --kill keyboxd +gpgconf --kill all ``` Импортируем ключи с карты: @@ -178,3 +177,38 @@ gpg --edit-key [id] 5 > quit ``` + +## Продление ключей + +Короткий вариант продлить сразу все ключи: +``` +gpg --import ~/master.key # временно импортируем мастер ключ +gpg --quick-set-expire [master-key-fingerprint] 2y '*' +gpg --delete-secret-keys [master-key-id] # удаляем секретные ключи +gpg --keyserver keys.openpgp.org --send-keys [master-key-id] # обновляем на сервере +gpg -a --export [master-key-id] > public.key # экспорт публичных ключей +# обновляем public.key на всех серверах git +``` + +Или вручную по одному: +``` +gpg --import ~/master.key # временно импортируем мастер ключ +gpg --edit-key [master-key-id] +> key 1 # выбираем первый сабключ +> expire # редактируем срок действия +> 1y # 1 год например +> key 1 # снимаем старый выбор +> key 2 # выбираем следующий сабключ +> expire # редактируем срок действия +> 1y # 1 год например +> key 2 # снимаем старый выбор +> key 3 # выбираем следующий сабключ +> expire # редактируем срок действия +> 1y # 1 год например +> key 3 # снимаем старый выбор +> save # сохраняем (локальные ключи сотрутся!) +gpg --delete-secret-keys [master-key-id] # удаляем секретные ключи +gpg --keyserver keys.openpgp.org --send-keys [master-key-id] # обновляем на сервере +gpg -a --export [master-key-id] > public.key # экспорт публичных ключей +# обновляем public.key на всех серверах git +```