openssl:生成具有非 DNS 主题备用名称的证书请求

Pao*_*sco 11 certificate openssl

要使用 openssl 创建包含主机的主题备用名称 (SAN) 的证书请求,我可以使用这样的配置文件(已剪辑):

[req]
req_extensions = v3_req
[ v3_req ]
subjectAltName = @alt_names
[alt_names]
DNS = xyz.example.com
Run Code Online (Sandbox Code Playgroud)

如果我需要提供专有名称或用户主体名称,我应该如何alt_names为用户证书请求配置该部分?
例如,我试过

[alt_names]
UPN = xyz@example.com
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

Error Loading request extension section v3_req
5356:error:22075075:X509 V3 routines:v2i_GENERAL_NAME_ex:unsupported option:.\crypto\x509v3\v3_alt.c:557:name=userPrincipalName
5356:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:.\crypto\x509v3\v3_conf.c:93:name=subjectAltName, value=@alt_names
Run Code Online (Sandbox Code Playgroud)

Pao*_*sco 15

在尝试了一些选项后(感谢 Jenny),我刚刚检查了源代码,发现配置文件需要以下值之一:

  • 电子邮件
  • URI
  • 域名系统
  • RID
  • 知识产权
  • 目录名
  • 其他名字

所以就我而言,我写了

[alt_names]
email = xyz@example.com
Run Code Online (Sandbox Code Playgroud)

并且 openssl 生成了请求文件。


Jen*_*y D 9

您几乎可以指定 CA 允许的任何内容。

相关的 RFC 是RFC5280。它在第 4.2.1.6 节中说。“主题备用名称”

主题备用名称扩展允许将身份绑定到证书的主题。除了或代替证书主题字段中的身份,还可以包括这些身份。定义的选项包括 Internet 电子邮件地址、DNS 名称、IP 地址和统一资源标识符 (URI)。存在其他选项,包括完全本地定义。可以包含多个名称形式,以及每个名称形式的多个实例。无论何时将此类身份绑定到证书中,都必须使用主题替代名称(或颁发者替代名称)扩展;然而,DNS 名称也可以使用 domainComponent 属性在主题字段中表示,如第 4.1.2.4 节所述。

您应该阅读该部分的其余部分,然后与您的 CA 核实他们支持的内容。值得注意的是,您的 CA必须验证所有主题备用名称是否正确。

要使用电子邮件地址,RFC 在第 4.1.2.6 节中说

使用电子邮件地址生成新证书的一致性实现必须在主题替代名称扩展(第 4.2.1.6 节)中使用 rfc822Name 来描述此类身份。不推荐但允许在主题专有名称中同时包含 emailAddress 属性以支持遗留实现。

因此,您应该使用 rfc822Name 而不是 UPI。