Как экспортировать открытый ключ в формате PEM с помощью GnuPG?

Вопрос или проблема

Я пишу программное обеспечение, которое использует библиотеку OpenSSL для проверки DSA подписей. У меня есть открытые ключи от отправителей в формате GPG. Как я могу преобразовать их в .pem, чтобы OpenSSL мог их читать?

Я нашел следующее в другой теме:

gpgsm -o secret-key.p12 --export-secret-key-p12 0xXXXXXXXX 

Для экспорта мне нужны ключи в ключевом хранилище gpgsm, не так ли? Я просто не могу понять, как импортировать свои ключи в ключевое хранилище, которое использует gpgsm. Я получаю ошибки:

gpgsm --import public.asc
gpgsm: всего обработано: 0
gpgsm: ошибка импорта сертификата: Конец файла

Может ли gpgsm как-то использовать ключевое хранилище gpg и выполнять экспорт оттуда?

Ваша команда экспорта правильная, но, как вы и предположили, ключевое хранилище gpgsm пустое. Вы можете это проверить с помощью:

gpgsm --list-keys

В результате не будет ничего.

На ваш последний вопрос: нет. gpg и gpgsm используют разные базы данных. Более подробную информацию можно найти здесь. Вам нужно создать или получить пару ключ/сертификат OpenSSL и импортировать его (в формате PKCS#12) в ключевое хранилище gpgsm (обычно ~/.gnupg/pubring.kbx), поэтому команда импорта должна быть:

gpgsm --import mycert.p12

Вы можете экспортировать ключи из одной системы, преобразовать их и импортировать в другую, но так называемое преобразование просто предоставляет метаинформацию (в большинстве случаев), и с этой метаинформацией создается совершенно новый сертификат/ключ. Вы можете посмотреть здесь примеры преобразования.

Ответ или решение

Для экспорта публичного ключа в формате PEM с помощью GnuPG, вам необходимо выполнить несколько шагов. Учтите, что GnuPG (gpg) и GnuPG Sm (gpgsm) используют разные базы данных ключей. Таким образом, вы не сможете напрямую импортировать ключи из одного в другое.

Вот как вы можете сделать этот процесс:

  1. Экспорт публичного ключа в формате GPG:
    Если у вас уже есть публичный ключ в формате GPG, вы можете экспортировать его в текстовом формате, выполнив следующую команду:

    gpg --export -a 'Имя пользователя или UID' > public_key.asc

    Это создаст файл public_key.asc, который содержит ваш публичный ключ в ASCII-формате.

  2. Конвертация GPG ключа в формат PEM:
    Для конвертации в PEM-формат, вам сначала нужно будет установить gpg2 и openssl, если они еще не установлены. Используйте следующую команду, чтобы преобразовать ваш ключ:

    gpg --export -a 'Имя пользователя или UID' | \
    openssl x509 -inform der -outform pem -out public_key.pem

    Однако, если ваш ключ не является сертификатом (например, это DSA или другой тип ключа), вам может потребоваться использовать другой подход, так как вышеуказанная команда работает только для сертификатов.

    Если у вас DSA ключ, вам нужно использовать следующую команду:

    gpg --export -a 'Имя пользователя или UID' | \
    gpg --dearmor | \
    openssl pkey -inform DER -outform PEM -out public_key.pem
  3. Использование gpgsm:
    Если вы хотите использовать gpgsm для работы с X.509 сертификатами, вы можете сначала импортировать ваш существующий сертификат в формате PKCS#12 (если он у вас есть). Вы можете создать его, используя OpenSSL:

    openssl pkcs12 -export -out mycert.p12 -inkey mykey.key -in mycert.crt

    Затем импортируйте его в gpgsm:

    gpgsm --import mycert.p12
  4. Проверка импортированных ключей:
    После импорта ключа вы можете проверить наличие ключа в gpgsm, выполнив команду:

    gpgsm --list-keys

Если всё прошло успешно, вы сможете экспортировать ваш публичный ключ из gpgsm в формате PEM.

Таким образом, порядок действий выглядит следующим образом:

  1. Экспортировать публичный ключ с помощью gpg в текстовом формате.
  2. Конвертировать его в формат PEM (если это не сертификат, вам нужно выполнить соответствующие команды).
  3. Использовать gpgsm, если это необходимо для работы с X.509 сертификатами.

Если у вас есть какие-либо вопросы о конкретных ошибках или других аспектах процесса, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...