无法从Windows上的/usr/local/ssl/openssl.cnf加载配置信息

时间:2013-01-22 12:56:13

标签: windows openssl public-key-encryption

在Windows上使用OpenSSL时:

openssl genrsa -out privatekey.pem 1024 -->

成功创建

openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 
---->

将错误消息显示为

  

无法从/usr/local/ssl/openssl.cnf

加载配置信息

13 个答案:

答案 0 :(得分:153)

安装OpenSSL后,我需要创建一个新的环境变量:

  • 姓名:OPENSSL_CONF
  • 价值:C:\Program Files\OpenSSL\openssl.cnf

在powershell中:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL\openssl.cnf"

此值与以前的安装版本不同(如本文前面的编辑​​所示)。另外,不要忘记将openssl二进制文件夹${env:ProgramFiles}\OpenSSL添加到路径中。

答案 1 :(得分:68)

您应该指定配置的绝对路径,如下所示:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...

答案 2 :(得分:27)

在Windows 10中,无需重启或在Administrator的模式下运行,而是设置openssl配置,如下所示:

Foo.joins(:bars).group('foos.id').having('COUNT(bars.foo_id) > 5')

当然,如果您使用set OPENSSL_CONF=C:\Program Files (x86)\GnuWin32\share\openssl.cnf

答案 3 :(得分:20)

在Windows中,[类似方案]

我遇到了同样的问题但是在请求证书签名请求时。

我做了以下,它为我工作。

安装OpenSSL后,在系统重启后以管理员身份执行Ran命令提示。[为了最好,我做了两个..以管理员和系统重启方式运行]

那样, 1. [错误案例]

C:\OpenSSL-Win64\bin>openssl req -new -key server.key -out server.csr

警告:无法打开配置文件:C:\ OpenSSL-Win64 \ bin \ openssl.cnf 和 无法从C:\ OpenSSL-Win64 \ bin \ openssl.cnf

加载配置信息

2. [使用警告]

C:\OpenSSL-Win64\bin> openssl req -new -key server.key -out server.csr -config C:\OpenSSL-Win64\bin\openssl.cfg
  

[警告信息]:警告:无法打开配置文件:C:\ OpenSSL-Win64 \ bin \ openssl.cnf

但是提示我输入Pass Phrase的server.key 对我来说工作

我提到了这个link我的帮助。

谢谢。

答案 4 :(得分:10)

使用GnuWin32工具,我在C:\ gnuwin32 \ share

下找到了openssl.cnf
set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf

答案 5 :(得分:9)

在这种情况下对我有用的唯一的自创 openssl.cnf 文件

以下是本练习所需的基础知识(根据需要进行编辑):

<?php

$opt = $_POST['product']; // $opt is value that came from your html select

switch ($opt) {
    case "28": // if the value is 28
        echo(1); // you can do what you want, now i'm printing the value on screen            break;
    case "1": // else if the value is 1
        echo(9);
        break;
    case "3": // else if the value is 3
        echo(2);
        break;
}

?>

我希望有所帮助。

答案 6 :(得分:7)

对于我在Windows 8上,我只是找到openssl.cnf文件并将其复制到C盘上。然后:

openssl req -new -key server.key -out server.csr -config C:\openssl.cnf

工作得很好。

答案 7 :(得分:6)

在Windows 7中,我不必重新启动,只需在管理员模式下运行命令提示符。

答案 8 :(得分:3)

就我而言,我需要使用config选项在命令上手动设置 openssl.cnf 文件的路径。所以命令

openssl req -x509 -config "C:\Users\sk\Downloads\openssl-0.9.8k_X64\openssl.cnf" -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 900

答案 9 :(得分:2)

如果您使用的是 Win32 OpenSSL v1.1.0g ,请设置此环境变量:

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

在使用“server.key”运行此命令之前,已成功创建“server.csr”

openssl req -new -key server.key -out server.csr

答案 10 :(得分:1)

关于为何找不到openssl的基本问题: 简短答案:某些openssl安装软件包已预先包含默认的openssl.cnf。其他软件包则没有。 在后一种情况下,您将在下面显示的链接中添加一个; 您可以根据需要输入其他特定于用户的名称-DN名称等。

直接从https://www.openssl.org/docs/manmaster/man5/config.html,I引用:

“ OPENSSL库配置

应用程序可以使用主OpenSSL配置文件或可选的替代配置文件自动配置OpenSSL的某些方面。 openssl实用程序包含此功能:除非子命令中使用选项使用备用配置文件,否则任何子命令都将使用主OpenSSL配置文件。

要启用库配置,默认部分需要包含指向主配置部分的相应行。默认名称是openssl实用程序使用的openssl_conf。其他应用程序可以使用其他名称,例如myapplication_conf。所有库配置行都显示在配置文件开头的默认部分。

配置部分应包含一组名称值对,其中包含特定的模块配置信息。该名称表示配置模块的名称。该值的含义是模块特定的:例如,它可以表示包含配置模块特定信息的另一个配置部分。例如:“

所以看来您必须根据您的要求自行配置openssl.cnf 专有名称(DN)以及其他特定于您的用途的条目。

Here是可从其生成openssl.cnf的模板文件 带有您的特定条目。

One Application实际上具有一个包含演示.cnf文件的演示安装。

此外,如果您需要以编程方式访问.cnf文件,则可以 包括适当的头文件--openssl / conf.h--并解析您的.cnf文件 使用

CONF_modules_load_file(const char *filename, const char *appname,
                            unsigned long flags);

Here是“ CONF_modules_load_file”的文档;

答案 11 :(得分:0)

对我来说,在调用之前放置变量就可以了:

OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365

答案 12 :(得分:0)

在Windows Powershell上:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"