
Using OpenSSL what does “unable to write 'random state'” mean?我正在生成一个自签名SSL证书来保护服务器的admin部分,并且不断从OpenSSL收到此消息:
这是什么意思? 这是在Ubuntu服务器上。 我已升级libssl以修复最近的安全漏洞。 实际上,发生这种情况的最常见原因似乎是您的主目录中的.rnd文件是由root而非您的帐户拥有的。快速修复:
有关更多信息,这是OpenSSL FAQ中的条目:
因此,我将检查RANDFILE,HOME和写入文件系统中那些位置的权限。 如果一切似乎都正常,则可以尝试使用strace运行并查看到底发生了什么。 我知道这个问题是在Linux上,但是在Windows上我有同样的问题。原来,您必须在"以管理员身份运行"模式下启动命令提示符,它才能正常工作。否则,您将得到相同的结果:无法写入"随机状态"错误。 Windows平台上的另一个问题,请确保您以管理用户身份运行命令提示符! 我不知道这咬了我多少次... 显然,我需要以root用户身份运行OpenSSL,以使其具有对种子文件的权限。
我在Windows Server上也有同样的事情。然后我通过更改
然后从头开始重做,一切都应该没问题。 对我来说,问题是我的主目录中有.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库的应用程序提供了自己的配置选项来指定熵源,请查看应用程序随附的文档。 |