Can';t在Windows上打开配置文件:/usr/local/ssl/openssl.cnf

Can';t在Windows上打开配置文件:/usr/local/ssl/openssl.cnf,windows,openssl,Windows,Openssl,我已经安装了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

我已经安装了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)
我如何解决它?
这是正确的命令吗?

/usr/local/ssl/openssl.cnf

这样的路径意味着该程序已使用Cygwin或MSYS编译。如果必须使用此
openssl
,则需要一个理解这些路径的解释器,如Cygwin或MSYS提供的Bash

另一种选择是下载或编译Windows原生版本的
openssl
。使用该函数,程序将需要一个类似

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

哪个更适合命令提示符。

解决方案正在运行以下命令:

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

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

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

或者,您可以在Windows环境变量中设置相同的变量
OPENSSL\u CONF


注意:使用时可能会发生这种情况(官方OpenSSL的编译+安装版本,可免费下载和使用)。此发行版作为“主要针对没有预编译的OpenSSL软件包的操作系统的服务”与OpenSSL的网站“半官方”链接。

我在Apache2.4.4上安装了SSL,并且首先执行此代码,成功了:
set OPENSSL\u CONF=C:\wamp\bin\apache\Apache2.4.4\CONF\OPENSSL.cnf


然后执行rest代码。

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

执行

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

非常好。

只需安装Win64 OpenSSL v1.0.2a或Win32 OpenSSL v1.0.2a,即可从下载。开箱即用,无需配置。

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

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

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

解决方案! 只需正确设置
-config
参数位置,即:

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

这适用于“openssl req”,但不适用于“openssl pkcs12”。环境变量对两者都起作用。奇怪的是,pkcs12选项没有包含-config开关
openssl-req
忽略此处的
-config
(Apache/2.4.10 Win64),但设置
openssl\u-CONF
效果良好。请确保创建用户变量。在我的例子中,创建一个系统变量并不能解决这个问题。它不起作用,我已经检查了控制台中的OPENSSL_CONF变量,它已经设置好了。如果您使用带有空格的路径,请尝试用引号将其括起来:
set“OPENSSL_CONF=C:\OPENSSL Win32\bin 123\OPENSSL.cfg”
还请注意,正如大多数跨平台开源垃圾软件一样,路径中包含unicode字符会产生问题。对我来说,需要使用双斜杠:
set-OPENSSL\u-CONF=C:\\Projects\\Web\\apache\\CONF\\OPENSSL.cnf
这是我从中下载的,我想说它有OP描述的问题,但在遵循建议(来自Xero accounting)之后要在安装后重新启动计算机,我发现它可以正常工作。这对我在Windows 2008 R2上使用Win64OpenSSL_Light-1_1_0c+1创建一个文本文件并将其命名为openssl.cnf是有效的。文件的示例内容:Stackoverflow post:No。我想这意味着它是用OPENSSLDIR编译的:“/usr/local/ssl”。我是用cl.exe
openssl version-f编译器编译的:cl-D_使用_V110_SDK71_[…]
。以管理员身份运行命令并执行
set openssl\u CONF=
修复了我的问题。谢谢
openssl ....................  -config C:\bin\apache\apache2.4.9\conf\openssl.cnf