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

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

要使用 openssl 创建包含主机主体备用名称 (SAN) 的证书请求,我可以使用如下配置文件(片段):

[req]
req_extensions = v3_req
[ v3_req ]
subjectAltName = @alt_names
[alt_names]
DNS = xyz.example.com

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

[alt_names]
UPN = [email protected]

但是我收到了这个错误:

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

答案1

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

相关的 RFC 是RFC5280. 4.2.1.6 节中提到。“主题备用名称”

主题备用名称扩展允许将身份绑定到证书的主题。这些身份可以作为证书主题字段中身份的补充或替代。已定义的选项包括 Internet 电子邮件地址、DNS 名称、IP 地址和统一资源标识符 (URI)。还有其他选项,包括完全本地定义。可以包括多种名称形式和每种名称形式的多个实例。每当要将此类身份绑定到证书中时,必须使用主题备用名称(或颁发者备用名称)扩展;但是,也可以使用第 4.1.2.4 节中所述的 domainComponent 属性在主题字段中表示 DNS 名称。请注意,当在主题字段中表示此类名称时,实现无需将其转换为 DNS 名称。

您应该阅读该部分的其余内容,然后咨询您的 CA 他们支持哪些内容。值得注意的是,您的 CA必须验证所有主题替代名称是否正确。

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

生成带有电子邮件地址的新证书的符合要求的实现必须使用主题备用名称扩展中的 rfc822Name(第 4.2.1.6 节)来描述此类身份。同时在主题可分辨名称中包含 emailAddress 属性以支持旧实现的做法已被弃用,但仍是允许的。

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

答案2

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

  • 电子邮件
  • URI
  • DNS
  • 消除
  • 知识产权
  • 目录名称
  • 其他名字

所以在我的例子中我写道

[alt_names]
email = [email protected]

并且openssl生成了请求文件。

答案3

确保使用@alt_names 时该部分是[alt_names]而不是[alt _names]

相关内容