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



在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 加载配置信息

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

  • 姓名: OPENSSL_CONF
  • 值:C:Program FilesOpenSSLopenssl.cnf

在Powershell中:

$env:OPENSSL_CONF = "${env:ProgramFiles}OpenSSLopenssl.cnf"

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

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

openssl req -x509 -config "C:OpenSSL-Win64binopenssl.cnf" ...

在Windows 10中,无需重新启动或在管理员模式下运行,而是像这样设置openssl配置:

set OPENSSL_CONF=C:Program Files (x86)GnuWin32shareopenssl.cnf

当然,如果您使用的是GnuWin32

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

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

#
# OpenSSL configuration file.
#
# Establish working directory.
dir                         = .
[ ca ]
default_ca                  = CA_default
[ CA_default ]
serial                      = $dir/serial
database                    = $dir/certindex.txt
new_certs_dir               = $dir/certs
certificate                 = $dir/cacert.pem
private_key                 = $dir/private/cakey.pem
default_days                = 365
default_md                  = md5
preserve                    = no
email_in_dn                 = no
nameopt                     = default_ca
certopt                     = default_ca
policy                      = policy_match
[ policy_match ]
countryName                 = match
stateOrProvinceName         = match
organizationName            = match
organizationalUnitName      = optional
commonName                  = supplied
emailAddress                = optional
[ req ]
default_bits                = 1024          # Size of keys
default_keyfile             = key.pem       # name of generated keys
default_md                  = md5               # message digest algorithm
string_mask                 = nombstr       # permitted characters
distinguished_name          = req_distinguished_name
req_extensions              = v3_req
[ req_distinguished_name ]
# Variable name             Prompt string
#-------------------------    ----------------------------------
0.organizationName          = Organization Name (company)
organizationalUnitName      = Organizational Unit Name (department, division)
emailAddress                = Email Address
emailAddress_max            = 40
localityName                = Locality Name (city, district)
stateOrProvinceName         = State or Province Name (full name)
countryName                 = Country Name (2 letter code)
countryName_min             = 2
countryName_max             = 2
commonName                  = Common Name (hostname, IP, or your name)
commonName_max              = 64
# Default values for the above, for consistency and less typing.
# Variable name             Value
#------------------------     ------------------------------
0.organizationName_default  = My Company
localityName_default        = My Town
stateOrProvinceName_default = State or Providence
countryName_default         = US
[ v3_ca ]
basicConstraints            = CA:TRUE
subjectKeyIdentifier        = hash
authorityKeyIdentifier      = keyid:always,issuer:always
[ v3_req ]
basicConstraints            = CA:FALSE
subjectKeyIdentifier        = hash

我希望这有所帮助。

在窗口中,[类似场景]

我遇到了同样的问题,但它是在请求证书签名请求期间。

做了下面,它对我有用。

安装 OpenSSL 后,在系统重新启动后以管理员身份运行命令提示符。[为了最好的,我都做了..以管理员身份运行和系统重新启动]

做到了,1.[错误案例]

C:OpenSSL-Win64bin>openssl req -new -key server.key -out server.csr

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

2.[与警告一起工作]

C:OpenSSL-Win64bin> openssl req -new -key server.key -out server.csr -config C:OpenSSL-Win64binopenssl.cfg

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

但是提示我输入服务器的密码短语.key它对我有用

我参考了,这个链接为我的帮助。

谢谢。

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

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

工作完美。

安装 OpenSSL 后,您需要重新启动计算机并使用 Run As Administrator 。然后它的工作。

使用 GnuWin32 工具,我在 C:\gnuwin32\share 下找到了 openssl.cnf

set OPENSSL_CONF=C:gnuwin32shareopenssl.cnf

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

openssl req -x509 -config "C:UsersskDownloadsopenssl-0.9.8k_X64openssl.cnf" -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 900

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

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

set OPENSSL_CONF=C:OpenSSL-Win32bincnfopenssl.cnf

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

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

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

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

"OPENSSL 库配置

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

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

配置

部分应由一组包含特定模块配置信息的名称值对组成。该名称表示配置模块的名称。该值的含义是特定于模块的:例如,它可以表示包含配置模块特定信息的进一步配置部分。例如:"

因此,似乎必须根据您的自我配置 openssl.cnf可分辨名称 (DN),以及特定于您的使用的其他条目。

这是可以从中生成openssl.cnf的模板文件与您的特定条目。

一个

应用程序实际上有一个演示安装,其中包含一个演示 .cnf 文件。

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

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

以下是"CONF_modules_load_file"的文档;

在 Windows Powershell 上:

$env:OPENSSL_CONF = "${env:ProgramFiles}OpenSSL-Win64binopenssl.cfg"
对我来说,

在调用之前放置变量是诀窍:

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

我在Windows 7上遇到了类似的问题:

WARNING: can't open config file: C:OpenSSL-Win32binopenssl.cfg
Unable to load config info from C:OpenSSL-Win32binopenssl.cfg

原因在不使用卸载程序的情况下OpenSSL-Win32目录中删除,因此并非所有组件都已从系统中正确删除。我不得不手动删除环境变量OPENSSL_CONF

一些openssl二进制文件,例如与git一起安装的,不需要OPENSSL_CONF环境变量,但如果这个环境变量存在,它必须导致有效的文件。

最新更新