主题备用名称未添加到证书

omn*_*mni 3 certificate ssl-certificate windows-server-2008-r2

我正在尝试使用 Windows CertSrv Web 注册客户端中的附加属性字段颁发新证书。

我添加了 CSR,选择了模板并将其输入到属性字段中:

SAN:dns=HOSTNAME&dns=HOSTNAME.DOMAIN.COM&ipaddress=IPADRESS
Run Code Online (Sandbox Code Playgroud)

请求成功,但是当我检查签名证书时,没有添加“备用名称”属性。我错过了什么吗?也许模板有问题?(使用带有一些自定义设置的默认 Win 2003 级别网络服务器模板副本)。

/edit 我也试过使用

certreq -submit -attrib "CertificateTemplate:MYTEMPLATE" <Cert Request.req> -attrib "SAN:dns=HOSTNAME&dns=HOSTNAME2&ipaddress=IPADDRESS"
Run Code Online (Sandbox Code Playgroud)

导致同样的问题:生成了证书,但没有任何 SAN 属性。

/edit2 我还设置了 CA 来使用颁发 SAN 证书

certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
Run Code Online (Sandbox Code Playgroud)

并重新启动 CA 服务。仍然:没有SAN。

请注意:使用 req. 文件和 OpenSSL 来生成 CSR 我能够使用包含一些 SAN 的 CA 生成证书。但是,此选项在我当前的情况下无效,因为我是从应用程序获取 CSR,而我无法为应用程序手动生成 CSR。

/edit3 我尝试使用没有任何更改的默认网络服务器证书,突然它起作用了。所以现在的问题是:启用 SAN 的模板要求是什么?

小智 5

我知道这很旧,但我自己才弄明白,并认为它可能会帮助别人。我也无法通过网页或certreq ... -attrib "SAN:DNS=<FQDN>[&DNS=<FQND2>...]..."格式让 CA 添加 SAN 。即使颁发了证书,SAN 属性也被忽略。

但是,我发现它适用于这种格式: certreq -attrib "CertificateTemplate:WebServer\nSAN:DNS=<Name1>[&DNS=<name2>...][&IPAddress=<IP1>...]" <csr filename> <cer filename>

例如,如果您有一个名为 HP_VC.csr 的证书请求文件,并且您希望主题备用名称为 vc1、vc2、vc1.domain.com、vc2.domain.com、192.168.1.1 和 192.168.1.2,则该命令将是:

certreq -attrib "CertificateTemplate:WebServer\nSAN:DNS=vc1&DNS=vc2&DNS=vc1.domain.com&DNS=vc2.domain.com&IPAddress=192.168.1.1&IPAddress=192.168.1.2" HP_VC.csr HP_VC.cer
Run Code Online (Sandbox Code Playgroud)

HP_VC.cer 中的证书将包含 SAN 属性。

我将它用于 HP Virtual Connect (VC) 模块、Onboard Administrators (OA) 和 iLO。它应该适用于需要带有 SAN 的证书的任何一般情况。