代码之家  ›  专栏  ›  技术社区  ›  Iain

如何使OpenSSL在Windows Vista上写入RANDFILE?

  •  17
  • Iain  · 技术社区  · 15 年前

    当我跑步时:

    openssl genrsa -out mykey.key 2048
    

    我得到以下错误:

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

    我的google显示这是某种Vista权限问题。如何允许Vista编写此文件,或者如何配置openssl来绕过它?

    5 回复  |  直到 15 年前
        1
  •  62
  •   judoman    15 年前

    根本问题是Windows上忽略了OpenSSL配置文件中的RANDFILE变量。这是一个 long-standing problem 不管目标Windows平台是x86还是x64,OpenSSL V1.0A版本都会继续存在。

    不过,有一个非常简单的解决方案。只需使用常规环境变量来设置RANDFILE值,比如

    set RANDFILE=.rnd
    

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

        2
  •  4
  •   Community CDub    8 年前

    我发现这可能有帮助: 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的位置,右键单击并以管理员身份运行

        3
  •  3
  •   Lee-anne    12 年前

    除了Windows7,我也有同样的问题。很容易解决问题,我创建了一个名为HOME的系统环境变量,并将其设置为我想要的.rnd文件所在的目录。这解决了这个问题,因为OpenSSL不知道我的.rnd文件在哪里(因为我没有这个文件),如果要创建它,它也不知道放在哪里。只要我用一个目录设置环境变量HOME(c:\就可以了!)我在OpenSSL中重新运行了我的密钥生成,它很快就成功了。为了验证,我检查了我创建的密钥,它有正确的内容。我还检查了将HOME环境变量设置为的目录,然后看到一个.rnd文件被放在那里!希望这对某人有帮助:-)

        4
  •  0
  •   Dave Clemmer manu    12 年前

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

        5
  •  0
  •   Søren Kjeldsen    11 年前

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

    解决方案:

    使用名称创建系统变量 随机文件 以及价值 %用户配置文件%.rnd

    注意 %用户配置文件% ,是自动将路径插入到用户配置文件的系统变量。

    推荐文章