Вопрос или проблема
Я создал несколько ключей, используя gpg.
Когда я пытаюсь подписать файл, gpg автоматически использует первый созданный ключ. Как установить ключ по умолчанию для подписи в gpg? Я пока не хочу удалять/аннулировать другой ключ.
Или как я могу изменить ключи по умолчанию для подписи?
Чтобы выбрать ключ по умолчанию без необходимости указывать --default-key
в командной строке каждый раз, создайте конфигурационный файл (если он еще не существует), ~/.gnupg/gpg.conf
, и добавьте строку, содержащую
default-key <key-fpr>
заменив <key-fpr>
на идентификатор или отпечаток ключа, который вы хотите использовать по умолчанию.
Эти шаги относятся к КАЖДОЙ подписи GPG. То есть, вы больше не хотите использовать утомительный --default-key
в CLI.
Список ваших подписей:
gpg --list-signatures
Выберите ваш ключ для использования по умолчанию. Затем установите ключ по умолчанию:
echo 'default-key:0:"xxxxxxxxxxxxxxxxxxxx' | gpgconf --change-options gpg
Обратите внимание, что есть только ОДИН двойной кавычки, которая указывает на начало строки текста. Также обратите внимание, что вся команда echo окружена парой одиночных кавычек.
Есть три значения, разделенные двумя двоеточиями:
- Первое — это параметр конфигурации “default-key”
- Второе — почти всегда ‘0’, что означает, что специальный флаг не установлен. ‘16’ означает удаление ключа из его конфигурационного файла. Подробнее о специальных флагах.
Также для gpgconf
, --change-options
требует аргумента. Этот аргумент указывает имя компонента, которое помогает выбрать, какой конфигурационный файл изменить. Используемые имена компонентов обычно gpg
для файла ~/.gnupg/gpg.conf
и gpg-agent
для файла ~/.gnupg/gpg-agent.conf
. Подробнее об именах компонентов здесь.
Как только настройка ключа по умолчанию завершена, если вы хотите использовать другой ваш ключ, используйте --local-user <ваше имя>
в командной строке gpg
только для этого сообщения. Или более простой вариант -u <ваше имя>
.
Обратите внимание, что -u
или --local-user
переопределяет этот --default-key
в командной строке или в настройках gpg.conf
.
Вы можете проверить, какой ваш текущий ключ по умолчанию для подписи, если таковой установлен, выполнив:
>echo "test" | gpg --sign --verbose
Если ключ по умолчанию настроен, будет выведено что-то вроде:
gpg: using "something here" as default secret key for signing
где something here
— это то, что настроено в вашем файле ~/.gnupg/gpg.conf
после ключевого слова default-key
. Например:
default-key something here
Обратите внимание, что кавычки не используются. Вы можете указать всё, что обычно используете для идентификации ключа: ID, длинный, короткий или отпечаток с пробелами или без. Легко проверить, сработало ли это, потому что echo "test" | gpg --sign --verbose
выведет ключ, который был действительно использован после предыдущей строки;
например, если я использую
default-key 8020B2666305EE2FD53E6827C155A4EEE4E527A2
Тогда я получаю:
>echo "test" | gpg --sign --verbose
gpg: enabled compatibility flags:
gpg: using pgp trust model
gpg: using "8020B2666305EE2FD53E6827C155A4EEE4E527A2" as default secret key for signing
gpg: writing to stdout
gpg: pinentry launched (530143 gnome3 1.3.1 - xterm-256color :0.0 - 1000/1000 0)
gpg: DSA/SHA512 signature from: "0xC155A4EEE4E527A2 Carlo Wood (CarloWood on Libera) <[email protected]>"
-----BEGIN PGP MESSAGE-----
owJ4nJvAy8zAJXgwdMm7J0/VFzGe5k5iSC+6eaoktbiEq6OUhUGQi0FWTJGlQWFT
WjLrO/2rdhnqMMWsTCCVDFycAjCRyQUM//1UhTudplzXq3yd1l/x1uTQjwnKv5rC
7siwdaz+/F1Sdz7D/4jrex99n9k78+ni6wq86/O27Enm04laJFYdr3SzJuObQjkA
zvZCkA==
=B0sh
-----END PGP MESSAGE-----
Показывает, что использовался 0xC155A4EEE4E527A2
(длинный id), что я также мог использовать вместо этого в ~/.gnupg/gpg.conf
, т. е.
default-key 0xC155A4EEE4E527A2
.
Ответ или решение
Установка ключа по умолчанию для подписи в GPG
Когда в системе созданы несколько ключей с помощью GPG, часто возникает необходимость назначить один из них в качестве ключа по умолчанию для подписания. Это позволяет избежать указания --default-key
на командной строке при каждом использовании GPG, что может быть неудобно и трудоемко. Рассмотрим процесс установки ключа по умолчанию для подписания шаг за шагом.
1. Определите ваш ключ
Во-первых, необходимо выяснить, какой ключ вы хотите установить по умолчанию. Для этого выполните команду:
gpg --list-signatures
Это позволит вам увидеть все доступные подписи и выбрать нужный ключ. Вы можете использовать как короткий, так и длинный идентификатор ключа, или даже его отпечаток.
2. Измените конфигурационный файл GPG
Чтобы установить выбранный ключ в качестве основного для подписания, отредактируйте или создайте файл конфигурации gpg.conf
, расположенный в вашем домашнем каталоге .gnupg
:
nano ~/.gnupg/gpg.conf
Добавьте (или измените) следующую строку, заменив <key-fpr>
на идентификатор или отпечаток вашего ключа:
default-key <key-fpr>
3. Альтернативное использование команды gpgconf
Вы также можете использовать gpgconf
для изменения настроек. Выполните следующую команду:
echo 'default-key:0:"xxxxxxxxxxxxxxxxxxxx' | gpgconf --change-options gpg
Обратите внимание на однозначную кавычку, которая используется для обозначения начала текстовой строки, и что вся команда echo
заключена в одиночные кавычки.
4. Подтверждение изменений
Чтобы убедиться, что изменения вступили в силу, выполните команду:
echo "test" | gpg --sign --verbose
GPG должен вывести сообщение о том, какой ключ используется по умолчанию для подписания. Пример вывода:
gpg: using "мастер-ключ" as default secret key for signing
5. Динамическое изменение ключа
Если вам нужно подписать файл другим ключом, отличным от установленного по умолчанию, используйте опции --local-user <имя_ключа>
или сокращенную -u <имя_ключа>
на командной строке. Эти опции имеют более высокий приоритет, чем ключ по умолчанию.
Важные замечания
- Убедитесь, что ваши изменения в
gpg.conf
сохранены и правильны. - Проверьте, что файлы конфигурации имеют надлежащие разрешения и не доступны для чтения другими пользователями системы.
Следуя данным шагам, вы сможете легко и удобно управлять вашими GPG-ключами, устанавливая нужный в качестве ключа по умолчанию для подписания.