gpg --gen-key在centos 6上获得足够的熵


49

尝试为服务器生成密钥。

gpg --gen-key

我们需要生成很多随机字节。在准备生成期间,执行一些其他操作(在键盘上键入,移动鼠标,利用磁盘)是个好主意。这为随机数生成器提供了获得足够熵的更好机会。

它就挂在那里。

还有另一个错误:

无法连接到`/root/.gnupg/S.gpg-agent':没有这样的文件或目录

在以下情况下似乎消失了:

gpg-
agent-守护程序GPG_AGENT_INFO = / tmp / gpg-4c5hyT / S.gpg-agent:1397:1; 导出GPG_AGENT_INFO;

#GPG_AGENT_INFO=/tmp/gpg-4c5hyT/S.gpg-agent:1397:1; export GPG_AGENT_INFO;
gpg --gen-key
...

但同样,它停留在“ ...获得足够的熵”。

没有“ ++++++++++++++++++++++++++++++++++++++++++++”的从论坛帖子中获得的密钥看起来应该是预期的。

我尝试过重新安装该软件包,但似乎所有内容都取决于gpg。

我已经读过其他人在centos 6上也有这个问题(而centos 5可以正常工作)。

没什么特别的/var/log/*

关于从这里出发的任何想法?

谢谢。


如果您有HSM,则rng-tools仅是一种解决方案,建议使用此方法的答案在没有此功能的系统上将失败。您将看到类似以下消息:启动硬件RNG熵收集器守护程序:(未找到硬件RNG设备
索引

Answers:


49

gpg --gen-key命令像这样挂起时,登录到另一个shell并执行以下命令:

dd if=/dev/sda of=/dev/zero

(此命令基本上是从硬盘驱动器读取并丢弃输出,因为写入to /dev/zero不会执行任何操作。)

几秒钟/分钟后,密钥生成命令应完成。


2
太棒了 谢谢。我不敢相信我错过了手册的这一部分:/
Stormdrain

2
每次都获取不同的熵将是一个更好的主意。如果您的系统一直在用尽熵,那么您的配置就出了点问题,或者您很快就用完了熵(以至于您应该拥有硬件RNG)。如果您需要定期增加熵,可以使用一些有效的位置来简单地下载更多信息,例如洪堡大学的Quantum RNG
克里斯S

18
我实际上尝试过此操作,但是由于我没有root用户,因此无法直接访问/ dev / sda。相反,对我find / | xargs file
有用的

2
一分钟后,我感到很舒服,find / | xargs file而不是跑步dd if=/dev/sda of=/dev/zero。谢谢!
Lea

1
你是说of=/dev/null
maxschlepzig

22

为了获得更可靠的解决方案,您可以安装与随机数生成器相关的实用程序,该实用程序将确保您始终有足够的随机字节。

yum install rng-tools

然后编辑/etc/sysconfig/rngd并添加EXTRAOPTIONS="-r /dev/random"

启动服务

 service rngd start

瞧,你从此过着幸福的生活:)


5
如果您不想启动该服务,则只需在安装后rngd -r /dev/random以root用户身份运行rng-tools即可。您的密钥生成将立即开始。
davidjb,2015年

2
但这本身不会产生熵。
Otheus

7

之前给出的两个评论都很好。但是这只是我的2美分。

RHEL / centos 6和熵的问题在于它们是无滴答的内核。因此,这些内核本身无法产生足够的熵。您必须连接一些键盘,甚至要移动一些鼠标,或者使用dd进行上述操作。

rngd守护程序很棒,大多数商业实体都使用它。

但是,我见过的最好的方法是使用专用的TPM设备。它们是非常昂贵的小型硬件。您放置它们,并且rngd利用来自硬件来源的随机真实熵。据我所知,富士通有一些不错的TPM设备。

是的,这三种方法几乎涵盖了熵部分。


很有意思。谢谢。正如我对Chris所述,我将很快使用RNG附带的HSM。
2013年

4

扭转其他反应,但至少一个衬里而不是根。

((find / | xargs file) &> /dev/null &); gpg2 --gen-key --batch --passphrase-file output-key.txt key-gen-options.txt

密钥生成选项包含

Key-Type: 1
Key-Length: 2048
Subkey-Type: 1
Subkey-Length: 2048
Name-Real: myuser
Name-Email: myuser@email.com
Expire-Date: 0

Output-key.txt包含我的超级秘密密钥。




1

我是怎么做到的:

  1. pacman -S community/rng-tools
  2. vim /etc/conf.d/rngd 加上 RNGD_OPTS="-r /dev/urandom"
  3. systemctl enable --now rngd
  4. gpg-agent --daemon
  5. gpg --full-gen-key

即使$GNUPGHOME设置为指向自定义目录也可以使用。


1

我尝试了所有解决方案,发现haveged即使其他解决方案都无法工作(尤其是在没有太多用户输入或活动的无头服务器上),效果也最好。

yum install haveged

apt install haveged

它启动haveged守护程序服务,该服务将/dev/random充满熵。--key-gen应该在一分钟内完成。

您可以通过运行进行验证cat /dev/random。通常,它将很快耗尽熵并暂停。这就是--key-gen挂起的原因。但是安装后havegedcat /dev/random应连续提供输出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.