OpenSSL 中 CSR 配置文件的属性在哪里标准化?

Where are the attributes for a CSR config file in OpenSSL standardized?

互联网上有大量关于 OpenSSL CSR 配置文件外观的示例,但我还没有发现规范/属性实际标准化/声明的位置。

元:这不是一个真正的 programming/development 问题,可能属于服务器故障或超级用户。

openssl req 使用四种配置来生成 CSR:

  • 控制 req 命令本身操作的选项或设置,例如要生成的密钥的默认大小(对于 RSA)或要写入的密钥文件,以及用于签名的哈希

  • 主题专有名称中的值;这些 通常 从 user/terminal 提示,但可以硬编码,或使用选项 -subj

    覆盖
  • 'attributes'(直接)在 CSR 中,参见 rfc2986,它使用与 DN 相同的语法,可以提示或硬编码

  • 请求延期;这些实际上都封装到 OID 为 1.2.840.113549.1.9.14 的单个属性中,但是因为它们对应于证书或 CRL 中的扩展(它们在属性中 not)OpenSSL分别配置它们

req 手册页或新版本可能在您的系统上 openssl-reqon the web(其他版本链接在右侧)在标题配置文件格式中描述第一组,在专有名称和属性部分格式中描述第二组和第三组的 语法

DistinguishedName 的组成部分(又名 DN、X501Name 等,它们本身称为属性)和 CSR 的属性(如果有的话)都由 ASN.1 标识 Object 标识符又名 OID,使得它们原则上是可任意扩展的,扩展值也是如此(见下文)。在实践中,只有少数或两个 OID 通常用于 DN,并且由于 CSR 通常用于获取 X.509(或 PKIX)证书并且该证书通常用于与其他程序或系统进行互操作( s) 您通常不想使用您将要或可能想要与之互操作的程序或系统无法正确理解的 OID。通常属性 除了 extensionRequest 根本不被使用,但当它们被使用时,它们由 CA 处理并且通常不进入证书,因此对于互操作性无关紧要。

通常在 PKIX 证书中用于主题 DN 的 OID 在 rfc5280 section 4.1.2.6 partly by reference to the definition for Issuer in section 4.1.2.4 with the details of OIDs in the ASN.1 module in appendix A 中定义。当然,PKIX 并不是唯一使用 X.509 证书的领域,您可能正在使用 OpenSSL 来支持具有不同命名标准的其他应用程序领域。

常用的扩展OID有十几种,专门领域用的可能至少有一百种,但大部分都是CA放在证书里的,不能请求;可能只有少数可以有用地放入 CSR。 CSR 和证书支持的 OpenSSL 扩展在 x509v3_config (as linked in the req page under req_extensions), along with a link to the syntax for defining 'arbitrary' extensions -- ones not already coded in OpenSSL. For arbitrary extensions, and possibly even for supported ones, you may want to define new named OIDs, rather than repeating the inconvenient and unmnemonic numeric forms; that is described in the man page for config.

手册页中定义

PKIX 证书 中常用的扩展在 rfc 5280 section 4.2 中定义,但 non-PKIX 证书可能有所不同,并且如前所述,大多数证书扩展在 CSR 中没有意义。

另请注意,带有 -x509 选项的 req 命令会生成证书而不是 CSR;在这种情况下,使用主题 DN 和扩展(未请求实际扩展)的配置,但不使用属性,并且使用不同的设置来控制命令本身,例如有效时间。