如何让OpenSSL在Windows Vista上编写RANDFILE?

时间:2010-02-09 14:25:12

标签: windows-vista openssl

当我跑步时:

openssl genrsa -out mykey.key 2048

我收到以下错误:

unable to write 'random state'
    e is 65537 (0x10001)

我的谷歌搜索表明这是某种Vista权限问题。如何让Vista写入此文件,或者如何配置openssl来绕过它呢?

5 个答案:

答案 0 :(得分:61)

根本问题是Windows上忽略OpenSSL配置文件中的RANDFILE变量。这是一个long-standing problem,从OpenSSL v1.0a版本开始就一直存在,无论目标Windows平台是x86还是x64。

但是,有一个非常简单的解决方案。仅使用常规环境变量来设置RANDFILE值,如

set RANDFILE=.rnd

因为这个值是短暂的,所以必须为每个新的DOS框重新发行,或者在批处理文件中编写脚本。

答案 1 :(得分:4)

我发现这可能会有所帮助:Using OpenSSL what does "unable to write 'random state'" mean?

此处:http://adamyoung.net/OpenSSL-unable-to-write-random-state

这里有一个关于如何让它在vista中运行的建议{。{3}}。

找到cmd.exe的位置,右键单击并以管理员身份运行

答案 2 :(得分:3)

我遇到了同样的问题但是对于Windows 7.很容易解决,我创建了一个名为HOME的系统环境变量,并将其设置为我想要的.rnd文件所在的目录。这解决了这个问题,因为OpenSSL不知道我在哪里.rnd文件是(因为我没有),如果要创建它,它不知道放在哪里。一旦我用一个目录设置我的环境变量HOME(c:\就好了!)我在OpenSSL中重新生成了密钥生成,它直接工作。为了验证,我检查了我创建的密钥并且它具有适当的内容。我还检查了我将HOME环境变量设置为的目录,然后看到.rnd文件就在那里!希望这有助于某人: - )

答案 3 :(得分:0)

在您的环境变量中添加HOME变量。

答案 4 :(得分:0)

问题是该脚本缺少某些访问权限或无法找到该文件。

解决方案:

创建一个名为 RANDFILE 的系统变量,值%USERPROFILE%。rnd

请注意%USERPROFILE%,是一个自动插入用户个人资料路径的系统变量。