无法在Windows上打开配置文件:/usr/local/ssl/openssl.cnf

Him*_*dav 136 windows openssl

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

openssl genrsa -out subdomain.domain.com.key 1024
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

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)
Run Code Online (Sandbox Code Playgroud)

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

小智 240

解决方案是运行此命令:

set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg   
Run Code Online (Sandbox Code Playgroud)

要么

set OPENSSL_CONF=[path-to-OpenSSL-install-dir]\bin\openssl.cfg
Run Code Online (Sandbox Code Playgroud)

在使用openssl命令之前的命令提示符中.

让我们openssl知道在哪里可以找到它的.cfg文件.

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

注意:当使用Shining Light ProductionsOpenSSL二进制发行版(可免费下载和使用的官方OpenSSL的编译+安装程序版本)时,可能会发生这种情况.这种分布从OpenSSL网站"半正式"链接,作为"主要用于没有预编译的OpenSSL包的操作系统的服务".

  • 不起作用,我已经检查了控制台中的OPENSSL_CONF var并设置了它. (3认同)
  • 如果您使用的路径包含空格,请尝试用引号括起来:`set "OPENSSL_CONF=C:\OpenSSL Win32\bin 123\openssl.cfg"` (3认同)
  • 我必须将上述命令中的“cfg”更改为“cnf” (2认同)

小智 18

我在Apache2.4.4上使用SSL并首先执行此代码,做了诀窍:
set OPENSSL_CONF=C:\wamp\bin\apache\Apache2.4.4\conf\openssl.cnf

然后执行其余代码..


小智 8

/usr/local/ssl/openssl.cnf

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

另一种选择是下载或编译Windows Native版本的openssl.使用该程序将需要一个像这样的路径

C:\Users\Steven\ssl\openssl.cnf
Run Code Online (Sandbox Code Playgroud)

哪个更适合命令提示符.


小智 7

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

打开CMD窗口时,请确保以管理员身份运行它.(右键单击"开始"菜单中的"命令提示符",然后选择"以管理员身份运行")

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


T.T*_*dua 5

解!

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

openssl ....................  -config C:\bin\apache\apache2.4.9\conf\openssl.cnf
Run Code Online (Sandbox Code Playgroud)

  • 这适用于"openssl req",但不适用于"openssl pkcs12".环境变量适用于两者.奇怪的是pkcs12选项不包含-config开关. (5认同)