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。

如何设置:

  1. 在这里下载OpenSSL二进制文件。 (请注意,这是确认与版本0.9.8h一起使用。)
  2. 将此代码复制到名为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 
  3. 一旦你下载了OpenSSL的二进制文件,把它们解压到你的C盘上,名为OpenSSL的文件夹中。 (path需要是C:\ OpenSSL)。 不要移动任何文件夹的内容,只是将其提取到文件夹。
  4. 您已经准备好使用OpenSSL。 对于没有安装权限的Windows用户,这是一个很好的解决方法,因为它不需要任何权限。 从前面双击运行bat文件。

https://github.com/xgqfrms-gildata/App001/issues/3

  1. 首先,确保在正确的path中有一个openssl.cnf文件;
  2. 如果找不到,只需下载并复制到您的设置path。
 $ echo %OPENSSL_CONF% $ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf