Как указать, какой ключ использовать для подписи / проверки GnuPG?
У нас есть пакет, для которого мы пытаемся создать отдельную подпись, чтобы другой конец был уверен, что он от нас.
Я знаю, как указать правильные идентификаторы при создании пары ключей, так как gpg --gen-key
конкретно просит личность. Я также знаю, как экспортировать открытый и закрытый ключи для данной личности:
gpg --export me@somewhere.com --armour --output key.public
gpg --export-secret-keys me@somewhere.com --armour --output key.private
и что открытый ключ должен быть распространен и импортирован на принимающей стороне для проверки:
gpg --import key.public
Однако (мой первый вопрос) я не знаю, как указать конкретную пару ключей в ситуации, когда у одного идентификатора может быть больше одного. Например, скажем, у нас есть две пары ключей для me@somewhere.com
один для пакетов установки программного обеспечения и один для безопасного доступа к оболочке. Как мне экспортировать только одну из этих пар?
Мой второй вопрос больше связан с генерацией и проверкой подписи над документом.
Как работает команда:
gpg --detach-sig inputDoc --output detachedSigDoc
на самом деле знаете, какую пару ключей использовать для создания подписи? Я вижу, что есть --local-user
который позволяет вам "указать идентификатор пользователя, который будет использоваться для подписи", но как это работает, когда для данной идентичности существует несколько пар ключей?
В любом случае, похоже, что нет эквивалентной операции для gpg --verify
Опция, так как мы можем указать пару ключей для использования при проверке источника файла?
Что бы это ни стоило, мы используем GnuPG версии 1, так как мы находимся во встроенной системе.
1 ответ
Подписание: я не помню, если это изменение, но страница руководства v2 говорит либо --local-user/-u
или же --default-key
Можно указать ключ подписи. Хотя здесь это явно не указано, везде, где вам нужно идентифицировать ключ, вы можете использовать либо идентификатор пользователя (условно, но не обязательно адрес электронной почты), либо ключ. Если у вас есть несколько ключей для одного и того же идентификатора пользователя, используйте идентификатор ключа для уникального указания.
Проверка: keyid находится в пакете подписи, и (открытый) ключ обнаруживается автоматически - если у вас нет этого ключа в вашем наборе ключей, в этом случае он говорит Can't check signature: No public key
и если вы хотите проверить, вы должны получить и импортировать ключ.
PS: Как же вы используете ключ GPG/PGP для SSH? AFAIK, ни OpenSSH, ни коммерческий (Tectia) SSH не могут использовать ключи формата PGP.