如何在OpenSSL中修复“无法写入'随机状态'”


77

使用此命令生成私钥时

genrsa -out my-prvkey.pem 1024

它引发如下错误

Loadind'screen'进入随机状态-完成生成RSA私钥,1024位长模数...............................。 ......... +++++++ .................................... +++++++ ++无法写入“随机状态”,e为65537(0 * 10001)

这在创建公共证书时会出现任何问题。我在Windows中运行此命令。谁能帮我解决问题?


1
如果不在stackoverflow.com上,则应该在superuser.com上重新打开它。
雅各布

Answers:


116

最快的解决方案是:将环境变量RANDFILE设置为可以写入“随机状态”文件的路径(当然,请检查文件访问权限)。在命令提示符下:

set RANDFILE=C:\MyDir\.rnd
openssl genrsa -out my-prvkey.pem 1024

更多说明:Windows上的OpenSSL尝试按以下顺序保存“随机状态”文件:

  1. RANDFILE环境变量获取的路径
  2. 如果设置了HOME环境变量,则:$ {HOME} \。rnd
  3. C:\。rnd

我很确定在您的情况下,它最终尝试将其保存在C:\。rnd中(并且由于缺少足够的访问权限而失败)。不幸的是,OpenSSL不会打印任何错误消息中实际尝试使用的路径。


6
抱歉,它已关闭,伙伴...这是一个很大的问题,Google首先提出了它。
fool4jesus

1
这也很好用,而无需以管理员身份运行。(尽管只是设置HOME就足够了。)
Synetech 2014年

4
如果您使用的是PowerShell,则需要使用$env:RANDFILE = 'C:\MyDir\.rnd'(在PowerShellset中,别名Set-Variable与环境变量无关!)
Jeff Camera

31

也可能是您需要以管理员身份运行控制台。在Windows 7上,ctrl+shift在启动控制台窗口时按住。


我认为这可能应该是一个国家,除非您知道这是一个解决方法,但您的散文建议相反
Mike

3
您还可以通过单击开始,键入cmd,右键单击cmd.exe和以管理员身份运行来获得对cmd的管理员访问权限。:)
泰勒·拉弗蒂

31

只需在命令行中输入此行:

set RANDFILE=.rnd

我在Windows 10上安装了openssl,在命令提示符下运行了以上命令。openssl仍然给出与OpenSSL> genrsa-out key.pem相同的错误。将“屏幕”加载到随机状态-完成生成512位长模数的RSA私钥................ .............................................. ++++++++++++。 ...... ++++++++++++无法写入“随机状态”,e为65537(0x10001)
Rohit Borude

6

或者在Windows PowerShell中

$env:RANDFILE=".rnd"

3

我没有找到.rnd文件的位置,所以我以管理员身份运行cmd,它的工作原理很吸引人。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.