Используют ли GPG и GPGSM одну и ту же базу данных ключей?
Мне нужно экспортировать один из моих ключей GPG как ключ / сертификат PKCS12. gpg
неспособен сделать это, но инструмент gpgsm
является. Тем не менее, ввод gpgsm -o <file> --export-secret-key-p12 <key-id>
возвращается gpgsm: can't export secret key `<key-id>'
, Я проверял gpgsm --list-keys
и ничего не вернулось.
GPGSM должен работать с GPG? Я заметил, что при первом запуске для него был создан новый файл. Я бы предположил, что это не нужно, если GPG уже запущен и настроен. Обе стороны хотят иметь доступ к одной и той же связке ключей? Если так, как я могу это исправить? Если нет, как я могу экспортировать свой ключ из GPG и импортировать его в GPGSM?
2 ответа
Было бы более полезно описать, почему вы хотите что-то сделать, а не только то, что вы хотите сделать. Я предполагаю, что вы пытаетесь использовать свой ключ PGP с шифрованием или подписью электронной почты S/MIME, что на самом деле невозможно.
Чтобы ответить на этот вопрос, нет, GPG и GPGSM используют разные форматы и протоколы, поэтому в первую очередь они реализованы как отдельные инструменты. GPG - это реализация OpenPGP, а GPGSM работает с X.509 (в основном S/MIME).
Хотя оба используют одни и те же криптографические алгоритмы и теоретически могут использовать один и тот же материал ключа (например, идентичные параметры RSA), на этом сходство заканчивается - вы не можете напрямую преобразовать сертификат пользователя OpenPGP в сертификат X.509, поэтому вы не можете его с пользой экспортировать. в формате PKCS#12 тоже.
(gpg-agent может использовать ключи OpenPGP для аутентификации SSH, но это только потому, что в формате ключей SSH нет прикрепленных метаданных, поэтому "преобразование" просто извлекает параметры RSA. С другой стороны, сертификаты X.509 имеют такие метаданные в качестве имени субъекта, использующего синтаксис, отличный от OpenPGP, имя эмитента, которого нет в OpenPGP (основано на сети доверия), и использование ключа (что непросто, поскольку большинство реализаций OpenPGP используют два отдельных ключа в одном "сертификат", один для подписи и один для шифрования).)
Не прямой ответ на ваш вопрос, но CACert опубликовал вики-статью, в которой подробно описывается, что вы хотите сделать.
По сути, вы должны сгенерировать запрос на подпись сертификата, используя секретный ключ, который вы экспортировали из своей пары ключей, и получить сертификат, созданный центром сертификации, таким как CACert.
Я просто не могу экспортировать в формат файла p12 в Windows, используя gpgsm, но в Linux это не было проблемой.
Источник: http://wiki.cacert.org/ConvertingPgpKeyToCertificate