Как проверить подпись gpg (cli или с узлом js) без установки открытого ключа? у меня есть открытый ключ, но я не хочу добавлять его в связку ключей. Любые подсказки?
Спасибо, Флориан.
Как проверить подпись gpg (cli или с узлом js) без установки открытого ключа? у меня есть открытый ключ, но я не хочу добавлять его в связку ключей. Любые подсказки?
Спасибо, Флориан.
Вот сценарий оболочки, который я использую именно для этой цели. Он создает временный брелок, устанавливает в него указанный открытый ключ, запускает указанную команду, затем удаляет временный брелок.
Обратите внимание, что при этом ключ устанавливается с сервера ключей. Нетрудно настроить его, чтобы использовать ключ, который у вас уже есть на диске (и я должен добавить возможность сделать именно это).
Обновление: см. https://github.com/Keith-S-Thompson/gpg-tmp.
#!/bin/sh
keyid=$1
shift
case "$keyid" in
????????)
;;
*)
echo "Usage: $0 key args..." 1>&2
exit 1
esac
tmp_keyring=$HOME/$keyid-keyring.gpg
gpg --no-default-keyring --keyring $tmp_keyring --recv-keys $keyid
gpg --no-default-keyring --keyring $tmp_keyring "$@"
rm -f $tmp_keyring
Она действует как команда gpg
, но принимает дополнительный начальный аргумент, указывающий 8-значный идентификатор ключа.
Пример использования:
$ gpg coreutils-8.9.tar.gz.sig
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Can't check signature: public key not found
$ gpg-tmp 000BEEEE coreutils-8.9.tar.gz.sig
gpg: keyring `/home/kst/000BEEEE-keyring.gpg' created
gpg: requesting key 000BEEEE from hkp server subkeys.pgp.net
gpg: key 000BEEEE: public key "Jim Meyering <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Good signature from "Jim Meyering <[email protected]>"
gpg: aka "Jim Meyering <[email protected]>"
gpg: aka "Jim Meyering <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 155D 3FC5 00C8 3448 6D1E EA67 7FD9 FCCB 000B EEEE
Имейте в виду, что это абсолютно ничего не говорит о надежности ключа, но полезно для проверки целостности.
(Интересно, сколько ключей сгенерировал Джим Мейеринг, прежде чем он получил этот?)
Мне не нужно было много, gpg --dry-run
(или gpg -n
) работало на меня. Я запускал gpg 1.4.12 на Mac через Homebrew, но, похоже, это стандартный вариант. Не знаю, как это сравнивается с другими методами, упомянутыми здесь.
gpg --dry-run coreutils-8.9.tar.gz.sig
дает мне gpg: Can't check signature: public key not found
. (В моей связке ключей нет ключа Джима Мейеринга.)
- person Keith Thompson; 07.10.2014
gpg --dry-run --trust-model direct --keyserver-options auto-key-retrieve --auto-key-locate keyserver --keyserver keys.gnupg.net --verify-options pka-lookups --verify coreutils-8.9.tar.gz.sig coreutils-8.9.tar.gz
, но продолжает говорить gpg: Can't check signature: public key not found
. Ну, я полагаю, если вы действительно хотите избежать скрипта, вы можете написать команду вместо этого использовать временный дом/связку ключей и удалить ее после. Но смысл GPG в том, чтобы завоевать доверие: вот почему они усложняют задачу.
- person Louis St-Amour; 07.10.2014
verify-options pka-lookups
просто добавляет дополнительные проверки, он не загружается автоматически...)
- person Louis St-Amour; 07.10.2014