首页 文章

使用OpenSSL“无法写入'random state'”是什么意思?

提问于
浏览
359

我正在生成一个自签名的SSL证书来保护我的服务器的管理部分,我不断从OpenSSL获取此消息:

无法写'随机状态'

这是什么意思?

这是在Ubuntu服务器上 . 我已升级libssl以修复the recent security vulnerability .

7 回答

  • 510

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

  • 222

    显然,我需要以root身份运行OpenSSL才能获得播种文件的权限 .

  • 34

    您应该设置$ RANDFILE环境变量和/或创建$ HOME / .rnd文件 . (OpenSSL FAQ) . (当然,你应该拥有该文件的权利 . 其他人的答案就是这个 . 但首先你应该有文件和对它的引用 . )

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

    如果默认种子文件不存在或太短,可能会出现“PRNG not seded”错误消息 .

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

  • 12

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

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

  • 15

    我在Windows服务器上有同样的事情 . 然后我想通过改变 vars.bat 来解决这个问题:

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

    然后重新开始,一切都应该没问题 .

  • 6

    我知道这个问题在Linux上,但在Windows上我遇到了同样的问题 . 事实证明,您必须在“以管理员身份运行”模式下启动命令提示才能使其正常工作 . 否则你会得到相同的:无法写入“随机状态”错误 .

  • 2

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

    sudo rm ~/.rnd
    

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

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

    所以我会检查RANDFILE,HOME和权限,以便写入文件系统中的那些位置 .

    如果一切似乎都井然有序,你可以尝试使用strace运行,看看究竟发生了什么 .

相关问题