如何使用带有“使用者替代名称”字段的makecert
创建证书?
你可以使用-eku选项添加一些字段,例如'Enhanced Key Usage',我尝试了-san选项,但makecert不喜欢它。
这是一个自签名证书,因此任何使用IIS创建要发送给CA的内容的方法都不合适。
答案 0 :(得分:28)
更简单的方法是使用New-SelfSignedCertificate PowerShell命令行开关,该命令行开关默认包含SAN。在单个命令中,您可以创建证书并将其添加到商店。
New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
请注意,您需要以管理员身份运行PowerShell。
答案 1 :(得分:14)
Makecert似乎不支持SAN,所以我创建了一个带有SAN的证书,用于使用OpenSSL的IIS。查看我的帖子。
http://andyarismendi.blogspot.com/2011/09/creating-certificates-with-sans-using.html
答案 2 :(得分:8)
<强>更新强>
使用以下makecert
方法生成的证书在所有浏览器中都无法可靠地运行,因为它实际上不会生成“使用者替代名称”。
如果您检查证书,您会看到它实际上没有Subject Alternative Name
字段,而是在CN
字段中指定多个Subject
。
E.g。
Subject:
CN = blah.foo.corp
CN = blah
而真正的“SAN”证书将具有以下内容:
Subject Alternative Name:
DNS Name=blah.foo.corp
DNS Name=blah
要了解“主题”字段与“通用名称”和“使用者替代名称”字段之间的差异和历史记录,建议您阅读The (soon to be) not-so Common Name。
因此,似乎makecert
不能用于生成真正的“SAN”证书,您需要使用其他工具,例如openssl
。
原始答案:
至少使用Visual Studio 2012附带的makecert
版本,只需指定逗号分隔列表-n "CN=domain1, CN=domain2"
E.g。 (来自technet博客Makecert.exe SAN and Wildcard certificate)
makecert -r -pe -n "CN=*.fabrikam.com, CN=*.contoso.com" -b 01/01/2010 -e 01/01/2100 -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.3,1.3.6.1.5.5.7.3.4 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -len 2048