Can';t在Windows上打开配置文件:/usr/local/ssl/openssl.cnf
我已经安装了OpenSSL 64。我想为我的nodejs https服务器使用证书。我运行了以下命令: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 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.exeopenssl version-f编译器编译的:cl-D_使用_V110_SDK71_[…]
。以管理员身份运行命令并执行set openssl\u CONF=
修复了我的问题。谢谢
openssl .................... -config C:\bin\apache\apache2.4.9\conf\openssl.cnf