如何让 OpenSSL 在 Windows Vista 上写入 RANDFILE?
Posted
技术标签:
【中文标题】如何让 OpenSSL 在 Windows Vista 上写入 RANDFILE?【英文标题】:How do I make OpenSSL write the RANDFILE on Windows Vista? 【发布时间】:2011-01-14 20:13:15 【问题描述】:当我跑步时:
openssl genrsa -out mykey.key 2048
我收到以下错误:
unable to write 'random state'
e is 65537 (0x10001)
我的谷歌搜索表明这是某种 Vista 权限问题。如何让 Vista 编写此文件或如何配置 openssl 以绕过它?
【问题讨论】:
Using openssl what does "unable to write 'random state'" mean?的可能重复 【参考方案1】:根本问题是 OpenSSL 配置文件中的 RANDFILE 变量在 Windows 上被忽略。这是一个long-standing problem,自 OpenSSL v1.0a 版本起继续存在,无论目标 Windows 平台是 x86 还是 x64。
不过,有一个非常简单的解决方案。只需使用常规环境变量来设置 RANDFILE 值,例如
set RANDFILE=.rnd
因为这个值是短暂的,所以必须为每个新的 DOS 机器重新发布,或者在批处理文件中编写脚本。
【讨论】:
这也解决了我在 Windows 7 上的问题。【参考方案2】:我发现这可能会有所帮助:Using OpenSSL what does "unable to write 'random state'" mean?
另外,这里:http://adamyoung.net/OpenSSL-unable-to-write-random-state
http://www.mail-archive.com/openssl-users@openssl.org/msg51344.html 这里有一个关于如何让它在 vista 中工作的建议。
找到cmd.exe所在的位置,右键以管理员身份运行
【讨论】:
它不允许我更改 cmd.exe 的权限【参考方案3】:我有同样的问题,但对于 Windows 7。很容易解决,我创建了一个名为 HOME 的系统环境变量并将其设置为我想要我的 .rnd 文件所在的目录。这解决了这个问题,因为 OpenSSL 不知道我在哪里.rnd 文件是(因为我没有),如果要创建它,它不知道把它放在哪里。一旦我用一个目录设置了我的环境变量 HOME(c:\ 很好!)我在 OpenSSL 中重新运行了我的密钥生成,它直接工作了。为了验证,我检查了我创建的密钥,它有正确的内容。我还检查了我设置我的 HOME 环境变量的目录,你瞧,一个 .rnd 文件就在那里!希望这可以帮助某人:-)
【讨论】:
【参考方案4】:将HOME
变量添加到您的环境变量中。
【讨论】:
【参考方案5】:问题是脚本缺少某些访问权限或找不到文件。
解决办法:
创建一个名为 RANDFILE 和值 %USERPROFILE%.rnd
的系统变量注意 %USERPROFILE%,是一个系统变量,它会自动插入您的用户配置文件的路径。
【讨论】:
以上是关于如何让 OpenSSL 在 Windows Vista 上写入 RANDFILE?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Visual Studio 2017 在 Windows 上构建 OpenSSL?