如何让 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?

如何在 Windows 下编译 OpenSSL

如何在 Windows 下编译 OpenSSL

如何在Windows下编译OpenSSL

填坑:Windows下使用OpenSSL生成自签证书(很简单,一个晚上搞明白的,让后来者少走弯路)

如何在 Windows 下编译 OpenSSL