无法将 /root/.rnd 加载到 RNG 中:在哪里可以找到它,或者如何创建它?

Dis*_*eth 16 openssl random-number-generator

我正在尝试在 Ubuntu Server 18.04 上使用 OpenVPN 设置 VPN 服务器,并且我想使用 EasyRSA 来构建我的 PKI CA。

因此,当以 root 身份连接时,我启动了复制到/etc/openvpn/easy-rsa. 使用./clean-alland一切正常./build-dh,但是当我尝试启动时./pkitool --initca,出现此错误:

Can't load /root/.rnd into RNG
140171234709952:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
Run Code Online (Sandbox Code Playgroud)

在 openssl 配置文件 ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf) 中,我发现这一行表明它尝试到达的原因/root/.rnd

RANDFILE    = $ENV::HOME/.rnd
Run Code Online (Sandbox Code Playgroud)

根据我在网上阅读和理解的内容,.rnd是 openssl 用于生成随机数的种子。奇怪的是:即使我收到此错误,脚本也会生成 RSA 私钥。我只是担心它不是随机的,因为它没有种子。

所以我的问题是:这个文件在我的系统上不存在,它/root/不在/home/user/其中,不在which 是我唯一的其他用户,并且不find / -name ".rnd"返回任何内容。甚至find / -iname "*.rnd"什么都不返回。

我什至不知道如何创建它,或者我是否理解这一切都是错误的。

use*_*686 11

即使我收到此错误,脚本也会生成 RSA 私钥

该文件不需要存在;OpenSSL 在第一次之后自行创建。

我只是担心它不是随机的,因为它没有种子。

操作系统通过/dev/urandom或通过系统调用(如getentropy()或 )使用其自己的 RNG 提供种子CryptGenRandom()。您无需提供任何额外的东西。

我猜想这个.rnd文件或多或少是操作系统缺乏良好 CSPRNG 时的遗留物,可能是当 Linux/dev/urandom被认为质量不佳(并且/dev/random由于“熵计算”而产生的数据非常缓慢)。现在情况不再如此,完全依赖存储在 homedir 中某个文件中的种子实际上会不太安全。


小智 6

在预期路径中创建一个

cd ~/; openssl rand -writerand .rnd
Run Code Online (Sandbox Code Playgroud)