GnuPG 是这些具有不可编写脚本的命令行的令人讨厌的工具之一。
我想gpg --gen-key
在脚本中运行,其余过程都是简单的命令。有人成功过吗?似乎支持输入密码,但不支持它询问的其他问题,如密钥类型、密钥大小、有效期、名称。
如果您使用该--yes
选项,它仍会显示确认对话框。
有没有什么方法openssl
可以用来生成密钥?
答案1
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: [email protected]
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) <[email protected]>
ssb 1024g/8F70E2C0 2000-03-09
答案2
$ gpg --quick-gen-key --batch --passphrase '...' [email protected]
据我所知,--quick-gen-key
脚本的更好选择是:
4.5.3 快捷键操作界面
GnuPG 的最新版本有一个界面,无需使用交互式命令 即可操作按键
--edit-key
。添加此界面主要是为了 GPGME 的便利(请考虑使用 GPGME,请参阅手册中的“GnuPG 的编程使用”小节)。
https://www.gnupg.org/documentation/manuals/gnupg/The-quick-key-manipulation-interface.html
4.5 无人值守使用
gpg
经常被其他软件用作后端引擎。为了帮助实现这一点,我们定义了一个机器接口,以便以明确的方式实现这一点。选项--status-fd
和--batch
几乎总是需要实现这一点。
- GnuPG 的程序化使用:GnuPG 的程序化使用
- 临时主目录:临时主目录
- 快捷键操作界面: 快捷键操作界面
https://www.gnupg.org/documentation/manuals/gnupg/Unattended-Usage-of-GPG.html
--batch
使其不询问问题(密码除外):
--batch
--no-batch
使用批处理模式。从不询问,不允许交互命令。
https://man.archlinux.org/man/core/gnupg/gpg.1.en
或者更大的例子。