有没有办法让openssl滑动提示,例如
Country Name (2 letter code) [US]:
Organization Name (eg, company) [My Company Name LTD.]:
Common Name (eg, YOUR name) [something]:
使用
创建证书时openssl req -config openssl.cnf -new -x509 ...
鉴于这些参数在openssl.cnf
文件中提供
e.g。
countryName = Country Name (2 letter code)
countryName_default = US
countryName_min = 2
countryName_max = 2
0.organizationName = Organization Name (eg, company)
0.organizationName_default = My Company Name LTD.
commonName = Common Name (eg, YOUR name)
commonName_max = 64
commonName_default = ${ENV::CN}
答案 0 :(得分:107)
答案 1 :(得分:30)
另一种解决方案是在配置文件中使用 prompt
指令。
见OpenSsl: Configuration file format
prompt
如果设置为值
no
,则会禁用证书字段的提示,并直接从配置文件中获取值。它还会更改distinguished_name
和attributes
部分的预期格式。
distinguished name
和attribute
部分有两种不同的格式。如果提示选项设置为
no
,则这些部分只包含字段名称和值:例如,
CN=My Name
OU=My Organization
emailAddress=someone@somewhere.org
这允许外部程序(例如基于GUI)生成包含所有字段名称和值的模板文件,并将其传递给
req
。或者,如果提示选项不存在或未设置为no,则该文件包含字段提示信息。它由以下形式的行组成:
fieldName="prompt"
fieldName_default="default field value"
fieldName_min= 2
fieldName_max= 4
答案 2 :(得分:11)
生成配置文件,在[req]部分中可以输入prompt = no。
例如:
[req]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
C = US
ST = California
L = Los Angeles
O = Our Company Llc
#OU = Org Unit Name
CN = Our Company Llc
#emailAddress = info@example.com
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
然后只执行例如。
openssl req -new -sha256 -config THATFILE.conf -key example.com.key -out example.com.csr
答案 3 :(得分:2)
不支持混合方法
可以直观地想到一种混合方法是可行的,您可以考虑将一些静态字段放入openssl.cnf中,并通过-subj
选项指定一些(CN)。但是,这不起作用。
我测试了一种情况
req_distinguished_name
和openssl req
一起运行
-subj=/CN=www.mydom.com
。 openssl抱怨缺少必填的“国家名称”字段,并且所生成的证书在主题行中仅具有CN。似乎-subj
选项完全覆盖了主题行,并且不允许更新单个字段。
这使得以下提供主题字段的所有以下三种方法互斥:
-subj
选项答案 4 :(得分:0)
-batch
可选参数使openssl req
命令不提示输入任何信息字段。我以这种方式使用它,而无需使用配置文件来自动执行自签名证书。
它在帮助中列出:
openssl help req
...
...
-batch Do not ask anything during request generation