如何在openssl中修复"无法写入'随机状态'"

aro*_*rok 72 windows openssl

使用此命令生成私钥时

genrsa -out my-prvkey.pem 1024
Run Code Online (Sandbox Code Playgroud)

它会抛出如下错误

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

这在创建公共证书时会出现任何问题.我在Windows中运行此命令.任何人都可以帮我修复吗?

sir*_*rge 108

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

set RANDFILE=C:\MyDir\.rnd
openssl genrsa -out my-prvkey.pem 1024
Run Code Online (Sandbox Code Playgroud)

更多解释:Windows上的OpenSSL尝试按以下顺序保存"随机状态"文件:

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

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

  • 对不起它被关闭了,伙计......这是一个很好的问题,谷歌首先提出来. (5认同)
  • 如果你正在使用PowerShell,你会想要使用`$ env:RANDFILE ='C:\ MyDir\.rnd'`(在PowerShell`set`中是`Set-Variable`的别名,它与环境无关变量!) (4认同)

小智 28

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

  • 您也可以通过点击"开始",键入cmd,右键单击cmd.exe,以及以管理员身份运行来获得对cmd的管理员访问权限.:) (3认同)

小智 28

只需在命令行中输入以下行:

set RANDFILE=.rnd
Run Code Online (Sandbox Code Playgroud)


kon*_*nzo 5

或者在Windows PowerShell中

$env:RANDFILE=".rnd"
Run Code Online (Sandbox Code Playgroud)