如何在 openssl 中修复“无法写入‘随机状态’”

Posted

技术标签:

【中文标题】如何在 openssl 中修复“无法写入‘随机状态’”【英文标题】:How to fix "unable to write 'random state' " in openssl 【发布时间】:2012-09-12 12:05:21 【问题描述】:

使用此命令生成私钥时

genrsa -out my-prvkey.pem 1024

它会抛出如下错误

将“屏幕”加载到随机状态 -done 生成 RSA 私有 密钥,1024 位长模数 ....................................+++++++ .........................+++++++++++ 无法写入“随机状态”e 是 65537 (0*10001)

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

【问题讨论】:

如果不在 ***.com 上,应该在 superuser.com 上重新打开。 ***.com/a/48290001/715269 【参考方案1】:

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

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

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

    路径取自 RANDFILE 环境变量 如果设置了 HOME 环境变量,则:$HOME\.rnd C:\.rnd

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

【讨论】:

抱歉,它已关闭,伙计......这是一个很好的问题,谷歌首先提出了它。 这也很有效,无需以管理员身份运行。 (虽然只设置HOME 就足够了。) 如果你使用 PowerShell,你会想要使用 $env:RANDFILE = 'C:\MyDir\.rnd'(在 PowerShell 中,setSet-Variable 的别名,与环境变量无关!)【参考方案2】:

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

【讨论】:

我觉得这可能应该是一个国家,除非你知道这是一个解决办法,但你的散文建议不然 您还可以通过点击开始、键入 cmd、右键单击 cmd.exe 并以管理员身份运行来获得对 cmd 的管理员访问权限。 :)【参考方案3】:

只需在命令行中输入这一行:

set RANDFILE=.rnd

【讨论】:

我已经在 Windows 10 上安装了 openssl,我已经在命令提示符下运行了上面的命令。 openssl 仍然给出相同的错误,OpenSSL> genrsa -out key.pem Loading 'screen' into random state - done 生成 RSA 私钥,512 位长模数...... .....................++++++++++++++。 ......++++++++++++++ 无法写入“随机状态”e 是 65537 (0x10001)【参考方案4】:

或者这个在windows powershell中

$env:RANDFILE=".rnd"

【讨论】:

【参考方案5】:

我没有找到 .rnd 文件的位置,所以我以管理员身份运行了 cmd,它的运行就像一个魅力。

【讨论】:

【参考方案6】:

从https://code.google.com/archive/p/openssl-for-windows/downloads下载适用于windows的openssl

将环境变量设置为路径变量 path="C:\your_folder\openssl-0.9.8k_X64\bin"

在 bin 的同一路径上运行以下命令

【讨论】:

以上是关于如何在 openssl 中修复“无法写入‘随机状态’”的主要内容,如果未能解决你的问题,请参考以下文章

汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码

修复OpenSSL漏洞 升级OpenSSL版本 nginx静态编译ssl模块

ssh漏洞修复:openssh升级及降级

重新编译Nginx指导手册修复静态编译Openssl的Nginx漏洞 (转)

心脏滴血漏洞搭建与复现修复(CVE-2014-0160)OpenSSL Heartbleed漏洞

如何升级OpenSSl版本