首页 / 知识

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

2023-04-17 06:18:00

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

Using OpenSSL what does “unable to write 'random state'” mean?

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

unable to write 'random state'

这是什么意思?

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


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

1
sudo rm ~/.rnd

有关更多信息,这是OpenSSL FAQ中的条目:

Sometimes the openssl command line utility does not abort with a"PRNG not seeded" error message, but complains that it is"unable to write 'random state'". This message refers to the default seeding file (see previous answer). A possible reason is that no default filename is known because neither RANDFILE nor HOME is set. (Versions up to 0.9.6 used file".rnd" in the current directory in this case, but this has changed with 0.9.6a.)

因此,我将检查RANDFILE,HOME和写入文件系统中那些位置的权限。

如果一切似乎都正常,则可以尝试使用strace运行并查看到底发生了什么。


我知道这个问题是在Linux上,但是在Windows上我有同样的问题。原来,您必须在"以管理员身份运行"模式下启动命令提示符,它才能正常工作。否则,您将得到相同的结果:无法写入"随机状态"错误。


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

我不知道这咬了我多少次...


显然,我需要以root用户身份运行OpenSSL,以使其具有对种子文件的权限。


我在Windows Server上也有同样的事情。然后我通过更改vars.bat来找出:

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

然后从头开始重做,一切都应该没问题。


对我来说,问题是我的主目录中有.rnd,但它是root拥有的。删除它并重新发出openssl命令可以解决此问题。


您应该设置$ RANDFILE环境变量和/或创建$ HOME / .rnd文件。 (OpenSSL常见问题解答)。 (当然,您应该拥有该文件的权限。其他答案与此有关。但是首先,您应该拥有该文件及其引用。)

最高版本为0.9.6,OpenSSL将种子文件写入了当前目录中的" .rnd"文件中。在0.9.6a版本中,您没有默认的种子文件。 OpenSSL 0.9.6b及更高版本的行为与0.9.6a相似,但如果未设置环境变量,则Windows系统上的HOME将使用默认值" C:"。

如果默认的种子文件不存在或太短,则可能会出现" PRNG not seeded"错误消息。

$ RANDFILE环境变量和$ HOME / .rnd仅由OpenSSL命令行工具使用。使用OpenSSL库的应用程序提供了自己的配置选项来指定熵源,请查看应用程序随附的文档。


状态消息服务器证书

最新内容

相关内容

猜你喜欢