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

标签 openssl x509 csr pkcs#10

样本 openssl root ca 配置来自 OpenSSL Cookbook定义以下内容 (p40):

[req]
...
req_extensions = ca_ext

[ca_ext]
...

稍后 (p43),生成根 ca key ,然后是根 ca 自签名证书。

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?

最佳答案

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

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

Extensions in certificates are not transferred to certificate requests and vice versa.

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

关于openssl - 配置中的 req_extensions 和命令行上的 -extensions 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274766/

相关文章:

multithreading - 充分利用硬件加速器

python稀疏矩阵获取最大值和索引

ssl - 为 IBM HTTP Web 服务器 SSL 证书创建 CMS key 数据库文件时出错

python - undefined symbol : PyUnicodeUCS2_Decode

openssl - 尝试将 .pfx 转换为 .pem 时,Mac 验证错误 : invalid password?

Java 和 Runtime.getRuntime().exec(String cmd)

openssl - 使用 openssl 从自签名证书生成的证书签名请求是否应该显示扩展属性?

apache - 将客户端证书从 Apache 转发到 Tomcat

go - 如何从 go 中的 x509 证书公钥中获取字符串?

php - 从私钥生成 CSR key