如何在 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 中,set
是 Set-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模块
重新编译Nginx指导手册修复静态编译Openssl的Nginx漏洞 (转)