shell – 如何在没有用户交互的情况下生成gpg密钥?
我发现在
https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html#Unattended-GPG-key-generation方法中生成gpg密钥而没有用户交互,但它似乎不起作用.
我的脚本是: #!/usr/bin/env bash rm -rf .gnupg mkdir -m 0700 .gnupg touch .gnupg/gpg.conf chmod 600 .gnupg/gpg.conf tail -n +4 /usr/share/gnupg2/gpg-conf.skel > .gnupg/gpg.conf touch .gnupg/{pub,sec}ring.gpg cat >.gnupg/foo <<EOF %echo Generating a basic OpenPGP key Key-Type: RSA Key-Length: 2048 Subkey-Type: RSA Subkey-Length: 2048 Name-Real: User 1 Name-Comment: User 1 Name-Email: user@1.com Expire-Date: 0 Passphrase: kljfhslfjkhsaljkhsdflgjkhsd %pubring foo.pub %secring foo.sec # Do a commit here,so that we can later print "done" :-) %commit %echo done EOF gpg2 --verbose --batch --gen-key .gnupg/foo 当我运行它时,它显示: =$./gen.keys.sh gpg: Generating a basic OpenPGP key gpg: no running gpg-agent - starting one gpg: writing public key to `foo.pub' gpg: writing secret key to `foo.sec' 但它只是挂起. 当我同时检查该用户的ps树时,我看到: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND tstpg 22603 0.0 0.0 24108 5688 pts/9 Ss 14:59 0:00 -bash tstpg 22624 0.0 0.0 13688 3168 pts/9 S+ 14:59 0:00 _ bash ./gen.keys.sh tstpg 22632 0.2 0.0 27428 3676 pts/9 SL+ 14:59 0:00 _ gpg2 --verbose --batch --gen-key .gnupg/foo tstpg 22634 0.3 0.0 18072 2884 pts/9 SL+ 14:59 0:00 _ gpg-agent --server 在?/ .gnupg / gpg.conf中没有提到代理,我不知道它正在尝试做什么. foo.pub/foo.sec文件在home dir中生成,但是为空. 我错过了什么?如何在没有任何用户交互的情况下生成密钥? 版本: > gpg(GnuPG)2.0.26
你可能已经没有熵了.密钥生成需要大量非常高质量的随机数;如果没有用户的活动来向计算机提供高质量的随机性,则熵池正在被生成耗尽,并且生成过程只是挂起,等待池重新填充.
你的选择,为了提高满意度,是 >重新配置gpg以使用非阻塞伪随机数生成器,这是最不明智的(尽管见下文), 编辑:mzhaase在this article on /dev/urandom vs. /dev/random的评论中引起了我的注意(非常感谢,这是一篇很棒的文章!)并且我不喜欢使用urandom来创建密钥.事实上,文章并没有说这两个来源是等价的,并指出
也就是说,在启动之后,直到urandom PRNG已经用足够的熵初始化,将它用于密钥生成真的是不安全的.这可能需要一段时间,尤其是在无人值守的无头服务器上,我们不知道何时达到阈值,因为系统没有明确告诉我们. 现在,如果/ dev / random准备发出数字,我可以合理推断熵池足够深,以至于urandom将被正确初始化.但是如果我必须在每次使用urandom之前检查/ dev / random阻塞(假设我生成密钥的次数少于我重启的情况,很可能就是这种情况)我不妨只使用/ dev / random中的数字生成我的密钥. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |