Вопрос или проблема
У меня есть публичный ключ GPG key.gpg
в бинарном формате. Я хотел бы конвертировать его в ASCII, чтобы итоговый файл имел заголовок
-----BEGIN PGP PUBLIC KEY BLOCK-----
Процесс, который я настраиваю для этого, не имеет доступа к обычному центральному хранилищу ключей, поэтому я не могу импортировать и затем экспортировать.
Какова команда GnuPG (версия 2) для этого?
gpg --keyring ./key.gpg --no-default-keyring --homedir /dev/null --export -a > key.asc
Обратите внимание на использование ./key.gpg
вместо просто key.gpg
: GnuPG не сделает то, что вы ожидаете с последним вариантом, и создаст пустое хранилище ключей в ~/.gnupg/key.gpg
.
gpg --enarmor < key.gpg > key.asc
это должно сработать.
Возможно, вы можете просто создать еще одно временное хранилище ключей, чтобы импортировать и экспортировать ключ следующим образом:
gpg --keyring /tmp/temp.gpg --no-default-keyring --import key.gpg
gpg --keyring /tmp/temp.gpg --no-default-keyring --export -a
Мне это не кажется элегантным, но это должно работать. Обратите внимание, что вторая команда экспортирует все ключи, присутствующие в хранилище ключей, в один единственный файл.
Ответ или решение
Чтобы преобразовать открытый ключ GPG из двоичного формата в ASCII без его импорта, необходимо воспользоваться утилитой GnuPG (версия 2). При этом требуется учитывать несколько нюансов, которые помогут избежать распространенных ошибок.
Пошаговая инструкция
-
Подготовка файла: Убедитесь, что у вас есть файл с двоичным открытым ключом, именуемый
key.gpg
. Этот файл должен находиться в доступной директории. -
Использование команды для конвертации: Вы можете использовать следующую команду в терминале:
gpg --no-default-keyring --keyring ./key.gpg --homedir /dev/null --export -a > key.asc
Пояснения к команде:
--no-default-keyring
: отключает использование стандартного хранилища ключей, чтобы избежать случайного создания пустого файла.--keyring ./key.gpg
: указывает на ваш двоичный ключ. Важно указывать путь явно (через./
), чтобы избежать создания нового пустого хранилища ключей в~/.gnupg/key.gpg
.--homedir /dev/null
: указывает, что директорией для хранения временных файлов служит/dev/null
, что также предотвращает создание немного неуместных файлов в стандартных каталогах.--export -a
: экспортирует ключ в ASCII-формате с заголовком.
-
Вывод в файл: Результат выполнения команды будет перенаправлен в файл
key.asc
, который будет содержать ваш открытый ключ с заголовком:-----BEGIN PGP PUBLIC KEY BLOCK-----
и далее сам ключ в ASCII-формате.
Альтернативный подход
Если вы предпочитаете использовать другой метод, вы можете воспользоваться командой:
gpg --enarmor < key.gpg > key.asc
Эта команда также преобразует двоичный ключ в ASCII-формат. Однако по мнению некоторых пользователей, первый метод предпочтительнее, поскольку он более явный.
Временное хранилище ключей
Если вам нужно импортировать и затем экспортировать открытый ключ, можно создать временное хранилище ключей для выполнения этих операций. Например:
gpg --keyring /tmp/temp.gpg --no-default-keyring --import key.gpg
gpg --keyring /tmp/temp.gpg --no-default-keyring --export -a > key.asc
Такой способ подойдет в случаях, когда требуется работать с несколькими ключами. Следует помнить, что последняя команда экспортирует все ключи из временного хранилища в один файл, так что будьте аккуратны с этим.
Заключение
Таким образом, с использованием указанных команд вы сможете эффективно преобразовать двоичный открытый ключ GPG в ASCII-формат, избегая лишних манипуляций с хранилищем ключей. Выбор между командами зависит от ваших предпочтений и конкретной ситуации.