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

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

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

或者更大的例子

相关内容