使用OpenSSL“无法写入随机状态”是什么意思?

我正在生成一个自签名的SSL证书来保护我的服务器的pipe理部分,并且我一直从OpenSSL收到这个消息:

无法写入“随机状态”

这是什么意思?

这是在Ubuntu服务器上。 我升级了libssl来修复最近的安全漏洞 。

实际上,发生这种情况的最常见的原因似乎是,您的主目录中的.rnd文件是由root用户拥有的,而不是您的帐户。 快速修复:

sudo rm ~/.rnd 

有关更多信息,请参阅OpenSSL FAQ中的条目:

有时openssl命令行实用程序不会以“PRNG not seeded”错误消息中止,但会抱怨它“无法写入随机状态”。 此消息引用默认的种子文件(请参阅上一个答案)。 一个可能的原因是没有默认文件名是已知的,因为既不设置RANDFILE也不是HOME。 (在这种情况下,版本高达0.9.6在当前目录中使用了“.rnd”文件,但这已经改变了0.9.6a)。

所以我会检查RANDFILE,HOME和写入文件系统中这些地方的权限。

如果一切都按顺序进行,你可以试着用strace跑,看看究竟发生了什么。

我知道这个问题是在Linux上,但在Windows上我有同样的问题。 事实certificate,你必须在“以pipe理员身份运行”模式下启动命令提示符才能工作。 否则你会得到相同的:无法写入“随机状态”的错误。

Windows平台上的另一个问题,请确保您以pipe理用户身份运行您的命令提示符!

我不知道这曾经咬过我多less次

显然,我需要以root用户身份运行OpenSSL才能拥有对种子文件的许可权。

我在Windows服务器上有同样的事情。 然后我想通过改变vars.bat这是:

 set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa 

然后从头开始重做,一切都会好的。

对我来说,问题是我的.rnd在我的主目录中,但它是由root拥有的。 删除它并重新发布openssl命令解决了这个问题。