Answers:
安装OpenSSL之后,需要创建一个新的环境变量:
OPENSSL_CONF
C:\Program Files\OpenSSL\openssl.cnf
在Powershell中:
$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL\openssl.cnf"
该值不同于以前的安装版本(如本文的先前编辑所示)。另外,不要忘记将openssl二进制文件夹添加${env:ProgramFiles}\OpenSSL
到您的Path中。
C:\OpenSSL-Win32\bin\openssl.cfg
。
C:\Program Files (x86)\Git\ssl\openssl.cfg
对于那些已经使用git的人。
SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
您应该指定配置的绝对路径,如下所示:
openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...
openssl.cfg
,安装后bin目录中仅存在该文件。但是有了这个文件,它似乎仍然可以工作。
-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
-config
标志的信息,请参见@Kosar的答案,这对我
在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
但促使我的密码短语为server.key它的工作对我来说。
我提到了此链接,以寻求帮助。
谢谢。
在这种情况下,唯一对我有用的是自行创建的 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 req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
就我而言,我需要在命令中使用options手动设置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
关于为什么找不到openssl的基本问题:简短答案:某些openssl安装软件包已预先包含默认的openssl.cnf。其他软件包则没有。在后一种情况下,您将在下面显示的链接中添加一个;您可以根据需要输入其他用户特定的名称-DN名称等。
从https://www.openssl.org/docs/manmaster/man5/config.html,我直接引用:
“ OPENSSL库配置
应用程序可以使用主OpenSSL配置文件或可选的替代配置文件自动配置OpenSSL的某些方面。openssl实用程序包含此功能:除非子命令中使用选项使用备用配置文件,否则任何子命令都将使用主OpenSSL配置文件。
要启用库配置,默认部分需要包含一条指向主配置部分的适当行。默认名称是openssl实用程序使用的openssl_conf。其他应用程序可以使用其他名称,例如myapplication_conf。所有库配置行均显示在配置文件开头的默认部分中。
配置部分应包含一组名称值对,其中包含特定的模块配置信息。该名称表示配置模块的名称。该值的含义是模块特定的:例如,它可以表示包含配置模块特定信息的另一个配置部分。例如:”
因此,似乎必须根据您的专有名称(DN)自行配置openssl.cnf以及其他特定于您的用途的条目。
这是模板文件,您可以从中生成带有特定条目的openssl.cnf。
一个应用程序实际上具有一个包含demo.cnf文件的演示安装。
此外,如果您需要以编程方式访问.cnf文件,则可以包括相应的标头--openssl / conf.h-并使用以下命令解析.cnf文件
CONF_modules_load_file(const char *filename, const char *appname,
unsigned long flags);
这是“ CONF_modules_load_file”的文档;