是否有可能使openssl跳过国家/公共名称提示?
有没有办法让openssl跳过以下提示是否有可能使openssl跳过国家/公共名称提示?,openssl,Openssl,有没有办法让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 多亏了 根据这个-s
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
多亏了
根据这个-subj
是一条路要走,例如
-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
另一种解决方案是在配置文件中使用
prompt=no
指令。看
提示
如果设置为值no
,则禁用证书字段提示,并直接从配置文件中获取值。它还会更改可分辨名称
和属性
部分的预期格式
可分辨名称
和属性
部分有两种不同的格式
如果提示选项设置为否
,则这些部分仅包含字段名和值:例如
这允许外部程序(例如基于GUI的程序)生成包含所有字段名称和值的模板文件,并将其传递给req
或者,如果提示选项不存在或未设置为“否”,则文件包含字段提示信息。它由以下形式的行组成:
生成一个配置文件,并在[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
不支持混合方法 可以直观地认为混合方法是可行的,您可以考虑在openssl.cnf中放置一些静态字段,并通过
-subj
选项指定一些(CN)。然而,这是行不通的
我测试了一个场景
- 将C、ST、L、O和OU放入openssl.cnf部分
和请求可分辨名称
- 使用
-subc=/CN=www.mydom.com
-subj
选项完全覆盖主题行,不允许更新单个字段
这使得以下三种提供主题字段的方法相互排斥:
- 提示
- 配置文件
选项-sub
- 可选参数
-batch
导致openssl req
命令不提示输入任何信息字段。我这样使用它,而不需要配置文件来自动化自签名证书
它列在帮助中:
openssl help req
...
...
-batch Do not ask anything during request generation
您可以在命令行上将这些内容作为参数传递。我记不起语法了。谢谢,行得通<代码>-subc'/C=US/ST=Oregon/L=Portland/CN=www.madboa.com'是进入的方式,这种方式不需要配置文件我不明白为什么最后显示这个答案…谢谢确认。这确实应该标记为bug。当我运行它时,
-subc
被忽略,即使在-config
之后指定。这应该是可以接受的答案。如果已经有一个配置文件,那么提供/CN/O/C选项是没有意义的,因为它再次是命令。@AdityaVikasDevarapalli在写了这个答案8年后,我同意。但我有偏见,我想它不是真的没有配置文件:如果没有指定,它是从一个默认的位置,并失败,如果它没有安装在那里。
[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
openssl help req
...
...
-batch Do not ask anything during request generation