在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
加载配置信息
答案 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.cnfset 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"