如何在脚本中使用 gpg --gen-key?

tek*_*aul 15 linux script pgp gnupg openpgp

GnuPG 是这些令人讨厌的工具之一,它具有不可编写脚本的命令行。

我想gpg --gen-key在脚本中运行,其余的过程是简单的命令。有没有人有这方面的运气?似乎支持输入密码,但不支持它询问的其他问题,密钥类型、密钥大小、到期时间、名称。

如果您使用该--yes选项,它仍会显示确认对话框。

有什么办法openssl可以使用一些更友好的工具来生成密钥吗?

Jen*_*rat 16

OpenSSL 不支持 OpenPGP,因此您不能将其用于密钥生成。无论如何,GnuPG--with-colons--batch. 对于大多数操作,使用 GPGME 是可行的方法,至少对于存在库以通过它与 GnuPG 接口而无需自己解析输出的高级编程语言。

脚本化的密钥生成也是可能的:您正在寻找无人值守的密钥生成,这很有可能。最后归结为在文件中存储关于如何生成密钥的描述,并运行gpg --batch --genkey [filename].

上面链接的文档包含以下有关无人值守密钥生成的示例:

$ cat >foo <<EOF
     %echo Generating a basic OpenPGP key
     Key-Type: DSA
     Key-Length: 1024
     Subkey-Type: ELG-E
     Subkey-Length: 1024
     Name-Real: Joe Tester
     Name-Comment: with stupid passphrase
     Name-Email: joe@foo.bar
     Expire-Date: 0
     Passphrase: abc
     %pubring foo.pub
     %secring foo.sec
     # Do a commit here, so that we can later print "done" :-)
     %commit
     %echo done
EOF
$ gpg2 --batch --gen-key foo
 [...]
$ gpg2 --no-default-keyring --secret-keyring ./foo.sec \
       --keyring ./foo.pub --list-secret-keys
/home/wk/work/gnupg-stable/scratch/foo.sec
------------------------------------------
sec  1024D/915A878D 2000-03-09 Joe Tester (with stupid passphrase) <joe@foo.bar>
ssb  1024g/8F70E2C0 2000-03-09
Run Code Online (Sandbox Code Playgroud)