在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后,您需要重新启动计算机并使用Run As Administrator。那么它就起作用了。
Run As Administrator
在Windows 7中,我不需要重新启动,只需以管理员模式运行命令提示符即可。
你应该指定配置的绝对路径,就像这样:
openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...
在安装OpenSSL之后,我需要创建一个新的环境变量:
OPENSSL_CONF
C:\Program Files\OpenSSL\openssl.cnf
powershell:
$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL\openssl.cnf"
这个值与以前的安装版本不同(如本文前面的编辑所示)。另外,不要忘记将openssl二进制文件夹${env:ProgramFiles}\OpenSSL添加到您的路径中。
${env:ProgramFiles}\OpenSSL
在windows中,[类似的场景]
我也遇到了同样的问题,但这是在请求证书签名请求期间。
我做了下面的事情,这对我很有效。
安装OpenSSL后,在系统重启后以管理员身份运行命令提示符。为了最好,我两者都做了。以管理员身份运行并重启系统]
C:\OpenSSL-Win64\bin>openssl req -new -key server.key -out server.csr
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
我提到,这个链接为我的帮助。
谢谢你!
使用GnuWin32工具,我在C:\ GnuWin32 \share下找到了openssl.cnf
set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf
对我来说,在Windows 8上,我只是找到了openssl.cnf文件,并将其复制到C盘。然后:
openssl req -new -key server.key -out server.csr -config C:\openssl.cnf
完美的工作。
对我来说,在调用之前放置变量是可行的:
OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365
在这种情况下,对我有用的只有是自创 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
我希望这对你有所帮助。
在Windows 10中,不需要重新启动,也不需要以管理员模式运行,而是像这样设置openssl配置:
set OPENSSL_CONF=C:\Program Files (x86)\GnuWin32\share\openssl.cnf
当然,如果你正在使用GnuWin32
GnuWin32
在我的例子中,我需要在命令中使用config选项手动设置openssl.cnf文件的路径。所以这个命令
config
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
如果你正在使用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
关于为什么openssl找不到的基本问题: 简单回答:一些openssl的安装包预先包含了默认的openssl.cnf。其他包则不然。 在后一种情况下,你将包括一个下面所示的链接; 您可以根据需要输入额外的用户细节——DN名等
从https://www.openssl.org/docs/manmaster/man5/config.html,I直接引用:
openssl库配置
应用程序可以使用主OpenSSL配置文件或可选的备用配置文件自动配置OpenSSL的某些方面。openssl实用程序包括这个功能:任何sub命令都使用主openssl配置文件,除非在sub命令中使用选项来使用替代配置文件。
要启用库配置,默认部分需要包含指向主配置部分的适当行。默认名称为openssl工具使用的openssl_conf。其他应用程序可能使用替代名称,例如myapplication_conf。所有库配置行都显示在配置文件开头的默认部分中。
配置部分应该由一组包含特定模块配置信息的名称值对组成。该名称表示配置模块的名称。该值的含义是模块特定的:例如,它可以表示包含配置模块特定信息的进一步配置部分。例如:“
因此,似乎必须根据您的要求自行配置openssl.cnf 区分名称(DN),以及特定于您的使用的其他条目
在这里是可以生成openssl.cnf的模板文件
一个应用程序实际上有一个演示安装,其中包含一个演示的.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-Win64\bin\openssl.cfg"
我在Windows 7上也遇到了类似的问题:
WARNING: can't open config file: C:\OpenSSL-Win32\bin\openssl.cfg Unable to load config info from C:\OpenSSL-Win32\bin\openssl.cfg
OpenSSL-Win32
一些openssl二进制文件,例如安装在git中,不需要OPENSSL_CONF环境变量,但如果这个环境变量存在,它必须指向有效的文件。