当前位置:  开发笔记 > 编程语言 > 正文

使用OpenSSL"无法写'随机状态'"是什么意思?

如何解决《使用OpenSSL"无法写'随机状态'"是什么意思?》经验,为你挑选了6个好方法。

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

无法写'随机状态'

这是什么意思?

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



1> Ville Laurik..:

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

sudo rm ~/.rnd

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

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

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

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


我的系统给了我这个问题,因为".rnd"文件由root而不是我的用户拥有.一个快速的'sudo chown用户:user~/.rnd`使一切顺利.
是的,如果你从php web服务器运行,用户是www-data,你应该在每个openssl之前添加"export":shell_exec('export RANDFILE =".rnd"; openssl ecparam -genkey -name secp256k1'))

2> Beachhouse..:

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


如果您在管理员模式下运行并且_still_收到"无法写入'随机状态'",则另一种解决方案是[`set RANDFILE = .rnd`](http://stackoverflow.com/questions/2229723/how-在执行`openssl`之前,先做make-i-make-openssl-write-the-randfile-on-windows-vista).
我作为管理员在Windows上运行但仍然得到错误
作为机器的管理员并使用"以管理员身份运行"是不同的."以管理员身份运行"强制程序以管理员身份运行,否则即使您是管理员,提示也将以非管理员安全许可运行.
在Powershell中,这是`$ env:RANDFILE =“。rnd”`而不是`set RANDFILE = .rnd`。

3> 小智..:

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

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



4> Luke Francl..:

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


您很可能曾经*以root身份运行*,因此创建了主目录中的.rnd文件,并且仅为root设置了权限.这件事发生在我身上一段时间了.删除.rnd解决了这个问题.

5> 小智..:

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

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

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


这样做了,我不必以管理员身份运行.谢谢!实际上,我只是使用`set HOME = .`

6> Zds..:

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

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有