使用makecert为自签名证书添加或创建"使用者替代名称"字段

wal*_*wal 27 certificate self-signed makecert x509certificate

如何使用makecert"使用者替代名称"字段创建证书?

在此输入图像描述

您可以使用-eku选项添加一些字段,例如"增强型密钥用法",我尝试了-san选项,但makecert不喜欢它.

这是一个自签名证书,因此任何使用IIS创建要发送给CA的内容的方法都不合适.

Dan*_*anO 29

更简单的方法是使用New-SelfSignedCertificate PowerShell命令行开关,该命令行开关默认包含SAN.在单个命令中,您可以创建证书并将其添加到商店.

New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My

请注意,您需要以管理员身份运行PowerShell.

  • 您如何将主题备用名称传递给该命令行开关? (2认同)
  • 它根据提供的DnsName为您创建一个.如果需要支持多个URL,还可以传入逗号分隔列表.例如`New-SelfSignedCertificate -DnsName localhost,mysite.com,test.com -CertStoreLocation cert:\ LocalMachine\My` (2认同)

And*_*ndi 15

Makecert似乎不支持SAN,所以我创建了一个带有SAN的证书,用于使用OpenSSL的IIS.查看我的帖子.

http://andyarismendi.blogspot.com/2011/09/creating-certificates-with-sans-using.html


Nat*_*han 8

更新

使用以下makecert方法生成的证书在所有浏览器中都不可靠,因为它实际上不会生成"主题备用名称".

如果您检查证书,您将看到它实际上没有Subject Alternative Name字段,而是CNSubject字段中指定多个.

例如

Subject:
CN = blah.foo.corp
CN = blah
Run Code Online (Sandbox Code Playgroud)

而真正的"SAN"证书将具有以下内容:

Subject Alternative Name:
DNS Name=blah.foo.corp
DNS Name=blah
Run Code Online (Sandbox Code Playgroud)

要理解"主题"字段与"通用名称"和"主题备用名称"字段之间的差异和历史记录,我建议阅读(即将成为)不那么普通的名称.

因此,它似乎makecert 不能用于生成真正的"SAN"证书,您将需要使用其他工具,例如openssl.


原答案:

至少使用makecertVisual Studio 2012附带的版本,只需指定逗号分隔列表即可指定多个主题-n "CN=domain1, CN=domain2"

例如(来自technet博客Makecert.exe SAN和Wildcard证书)

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
Run Code Online (Sandbox Code Playgroud)

  • 要明确的是,您不想使用多个SubjectCN,因为Firefox仅尊重最后一个而Chrome仅尊重第一个. (2认同)