【问题标题】:Can't open config file: /usr/local/ssl/openssl.cnf on Windows [duplicate]无法打开配置文件:Windows 上的 /usr/local/ssl/openssl.cnf [重复]
【发布时间】:2013-05-15 12:20:02
【问题描述】:

我已经安装了 OpenSSL 64。我想为我的 nodejs https 服务器使用证书。我运行了以下命令:

openssl genrsa -out subdomain.domain.com.key 1024

但我得到了错误:

WARNING: can't open config file: /usr/local/ssl/openssl.cnf
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
.........++++++
.........................................++++++
unable to write 'random state'
e is 65537 (0x10001)

我该如何解决?
这是正确的命令吗?

【问题讨论】:

标签: windows openssl


【解决方案1】:

解决方案是运行这个命令:

set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg   

set OPENSSL_CONF=[path-to-OpenSSL-install-dir]\bin\openssl.cfg

在命令提示符之前使用openssl 命令。

openssl 确定在哪里可以找到它的.cfg 文件。

或者,您可以在 Windows 环境变量中设置相同的变量 OPENSSL_CONF

注意:使用OpenSSL binary distribution from Shining Light Productions(官方 OpenSSL 的编译 + 安装程序版本,可免费下载和使用)时可能会发生这种情况。此发行版是“半官方”从 OpenSSL 网站链接的,作为“主要用于没有预编译 OpenSSL 包的操作系统的服务”。

【讨论】:

  • 确保您创建了一个用户变量。就我而言,创建系统变量并不能解决问题。
  • 不起作用,我检查了控制台中的 OPENSSL_CONF var 并且它已设置。
  • 如果您使用带空格的路径,请尝试用引号括起来:set "OPENSSL_CONF=C:\OpenSSL Win32\bin 123\openssl.cfg"
  • 另请注意,正如大多数跨平台开源 crapyware 所做的那样,路径中包含 unicode 字符会产生问题。
  • 对我来说需要使用双斜杠:set OPENSSL_CONF=C:\\Projects\\Web\\apache\\conf\\openssl.cnf
【解决方案2】:

我在 Apache2.4.4 上安装了 SSL,并首先执行了这段代码,成功了:
set OPENSSL_CONF=C:\wamp\bin\apache\Apache2.4.4\conf\openssl.cnf

然后执行剩下的代码..

【讨论】:

  • 这适用于我在带有 Win64OpenSSL_Light-1_1_0c +1 的 Windows 2008 R2 上
【解决方案3】:

/usr/local/ssl/openssl.cnf

这样的路径意味着程序已经用 Cygwin 或 MSYS 编译。如果您必须使用这个openssl,那么您将需要一个能够理解这些路径的解释器,例如由 Cygwin 或 MSYS 提供的 Bash。

另一种选择是下载或编译 Windows Native 版本的openssl。使用该程序将需要类似的路径

C:\Users\Steven\ssl\openssl.cnf

这将更适合命令提示符。

【讨论】:

  • 没有。我认为这意味着它是用 OPENSSLDIR 编译的:“/usr/local/ssl”。我的是用 cl.exe openssl version -f compiler: cl -D_USING_V110_SDK71_ [..]编译的。
【解决方案4】:

在我的例子中,我使用了 Shining Light 的二进制文件,并且环境变量已经更新。但在我以提升的权限运行命令窗口之前,问题仍然存在。

当您打开 CMD 窗口时,请务必以管理员身份运行它。 (右键单击开始菜单中的命令提示符并选择“以管理员身份运行”)

我认为由于用户帐户控制,它无法读取文件。

【讨论】:

  • 以管理员身份运行命令并执行set OPENSSL_CONF= 为我解决了这个问题。谢谢!
【解决方案5】:

解决方案!

只需正确设置-config参数位置,即:

openssl ....................  -config C:\bin\apache\apache2.4.9\conf\openssl.cnf

【讨论】:

  • 这适用于“openssl req”,但不适用于“openssl pkcs12”。环境变量对两者都有效。奇怪的是 pkcs12 选项不包括 -config 开关。
  • Funny...openssl req 在此处忽略 -config (Apache/2.4.10 Win64) 但设置 OPENSSL_CONF 工作正常。
【解决方案6】:

不知道 .cfg 和 .cnf 有什么区别 在我的服务器中,我找不到 .cfg 或 .cnf 我为same 创建了一个新文件并将其放在以下文件夹/usr/local/ssl/bin

执行了

.\openssl genrsa -des3 -out <key name>.key 2048 

做得很好..

【讨论】:

    【解决方案7】:

    只需安装 Win64 OpenSSL v1.0.2a 或 Win32 OpenSSL v1.0.2a,您可以从http://slproweb.com/products/Win32OpenSSL.html 下载这些。开箱即用,无需配置。

    【讨论】:

    • 这是我从那里下载的,并且要说它有OP描述的问题,但是在按照建议(来自Xero会计)安装后重新启动计算机后,我发现它可以工作没有问题。
    猜你喜欢
    • 2016-06-06
    • 2013-01-05
    • 2015-10-26
    • 2016-08-05
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2020-04-12
    相关资源
    最近更新 更多