OpenSSL和读取openssl.conf文件时出错
我正在运行的Windows XP 32位
我刚刚从下面的URL下载了Openssl并安装了它。 http://www.slproweb.com/products/Win32OpenSSL.html
然后我尝试使用以下命令创build一个自签名证书
openssl req -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
那么它开始给出以下错误
无法从/usr/local/ssl/openssl.cnf加载configuration信息
然后谷歌search后,我改变了上述命令
openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
但是现在我在命令提示符下出现以下错误
C:\ OpenSSL \ bin \ openssl.conf行-1上的错误
4220:error:02001002:system library:fopen:No such file or directory:。\ crypto \ bio \ bss_file.c:126:fopen('C:\ OpenSSL \ bin \ openssl.conf','rb')4220:错误:2006D080:BIO例程:BIO_new_file:没有这样的文件:。\ crypto \ bio \ bss_file.c:129:
4220:error:0E078072:configuration file routines:DEF_LOAD:no such file:。\ crypto \ conf \ conf_def.c:197:
请帮忙。 提前致谢。
在Windows上,您还可以设置环境属性OPENSSL_CONF
。 例如,从命令行中可以input:
set OPENSSL_CONF=c:/libs/openssl-0.9.8k/openssl.cnf
validation它你可以input:
echo %OPENSSL_CONF%
您也可以将其设置为计算机环境variables的一部分,以便所有用户和服务在默认情况下都可用。 例如,请参阅Windows NT中的环境variables以及如何在Windows XP中pipe理环境variables 。
现在,您可以运行openssl命令而不必传递configuration位置参数。
只需在命令行中添加参数-config c:\your_openssl_path\openssl.cfg
,将your_openssl_path
更改为实际安装的path。
只需在第四步创build一个openssl.cnf文件就可以了: http : //www.flatmtn.com/article/setting-openssl-create-certificates
试试以pipe理员身份运行openssl.exe。
如果您已经使用OpenSSL安装了Apache,请导航到bin目录。 在我的情况下,D:\ apache \ bin。
* 如果你独立安装openssl,这些命令也可以工作。
运行这些命令:
openssl req -config d:\apache\conf\openssl.cnf -new -out d:\apache\conf\server.csr -keyout d:\apache\conf\server.pem openssl rsa -in d:\apache\conf\server.pem -out d:\apache\conf\server.key openssl x509 -in d:\apache\conf\server.csr -out d:\apache\conf\server.crt -req -signkey d:\apache\conf\server.key -days 365
* 这将创build自签名证书,您可以用于开发目的
再一次,如果你在httpd.conf中安装了Apache,可以使用以下命令:
<IfModule ssl_module> SSLEngine on SSLCertificateFile "D:/apache/conf/server.crt" SSLCertificateKeyFile "D:/apache/conf/server.key" </IfModule>
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg
照顾正确的扩展( openssl.cfg不cnf)!
我从这里安装了OpenSSL: http : //slproweb.com/products/Win32OpenSSL.html
我刚刚从Apache的windows bin文件夹中使用openssl.exe类似的错误。 我有指定的-config标志在openssl.cnf文件的path中有一个错字。 我想你会发现的
openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
应该
openssl req -config "C:\OpenSSL\bin\openssl.cnf" -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
注意: conf应该是cnf 。
如果openssl安装成功,在c盘中search“OPENSSL”,findconfiguration文件并设置path。
set OPENSSL_CONF=<location where cnf is available>/openssl.cnf
它为我工作。
这里的问题是没有一个openssl.cnf文件给GnuWin32 openssl的东西。 你必须创build它。 你可以在这里find如何创build一个openssl.cnf文件:
http://www.flatmtn.com/article/setting-ssl-certificates-apache
它在哪里为你如何做到这一切。
请注意:最后用反斜杠给出的openssl命令是用于UNIX的。 对于Windows:1)删除反斜杠,2)将第二行向上移动,使其位于第一行的末尾。 (所以你只有一个命令。)
另外:阅读评论是非常重要的。 你可能想根据他们做一些改变。
如果你看到一个类似的错误
第-1行错误:apacheconfopenssl.cnf
尝试在-config中从反斜杠改变为前斜杠。
以pipe理员身份运行该命令,并将configuration文件复制到具有读权限的位置,并使用-config参数指定path。
这个解决方法在我的工作中帮了我们很多(技术支持),我们做了一个简单的batch file,我们可以从任何地方运行(我们没有权限来安装它)。 这个解决方法将设置variables,然后为您运行OpenSSL。 它也为您打开bin文件夹(因为这是您创build或修改的任何文件将被保存)。 另外,这只适用于Windows。
如何设置:
- 在这里下载OpenSSL二进制文件。 (请注意,这是确认与版本0.9.8h一起使用。)
-
将此代码复制到名为StartOpenSSL.bat的文件。 将其保存到您select的位置。 它可以从任何地方运行。
@echo off title OpenSSL cd\openssl\bin if exist "C:\openssl\share\openssl.cnf" ( set OPENSSL_CONF=c:/openssl/share/openssl.cnf start explorer.exe c:\openssl\bin echo Welcome to OpenSSL openssl ) else ( echo Error: openssl.cnf was not found echo File openssl.cnf needs to be present in c:\openssl\share pause ) exit
- 一旦你下载了OpenSSL的二进制文件,把它们解压到你的C盘上,名为OpenSSL的文件夹中。 (path需要是C:\ OpenSSL)。 不要移动任何文件夹的内容,只是将其提取到文件夹。
- 您已经准备好使用OpenSSL。 对于没有安装权限的Windows用户,这是一个很好的解决方法,因为它不需要任何权限。 从前面双击运行bat文件。
https://github.com/xgqfrms-gildata/App001/issues/3
- 首先,确保在正确的path中有一个
openssl.cnf
文件; - 如果找不到,只需下载并复制到您的设置path。
$ echo %OPENSSL_CONF% $ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf