config中的req_extensions和命令行上的-extensions有什么区别?

时间:2015-07-07 16:51:25

标签: openssl x509 csr pkcs#10

来自OpenSSL Cookbook的示例openssl root ca config定义了以下内容(p40):

[req]
...
req_extensions = ca_ext

[ca_ext]
...

稍后(p43),生成root ca key,然后生成root ca selfsigned cert。

openssl req -new \
-config root-ca.conf \
-out root-ca.csr \
-keyout private/root-ca.key

openssl ca -selfsign \
-config root-ca.conf \
-in root-ca.csr \
-out root-ca.crt \
-extensions ca_ext

在这个特定的用例中,req_extensions不是多余的吗? 什么时候真的需要req_extension?

1 个答案:

答案 0 :(得分:6)

req_extensions用于声明请求扩展包含在PKCS#10 证书签名请求(CSR)对象中。扩展名是CSR中签名数据的一部分 通常,CA在创建和签署X.509证书以响应CSR时,并且取决于证书配置文件,可能会或可能不会注意特定的请求扩展。您需要使用它来生成CSR,以便与希望以这种方式传达特定信息的CA一起使用。

OpenSSL本身不会将任何扩展从PKCS#10请求复制到X.509证书;必须显式声明证书的所有扩展。 OpenSSL x509 man page提供了一些评论:

  

证书中的扩展名不会转移到证书请求中,反之亦然。

因为您使用的是OpenSSL CA,所以使用req_extensions确实是多余的。