使用New-SelfSignedCertificate获取通配符证书

时间:2016-06-09 14:30:30

标签: powershell ssl

我找到了this的答案,但在尝试创建通配符证书时似乎没有用。

我已采取以下步骤:

  1. 使用Powershell命令向我的服务器添加了证书。
  2. New-SelfSignedCertificate -DnsName myhostname01,*.myhostname01 -CertStoreLocation Cert:\LocalMachine\My (我稍微审查了URL以避免潜在的不安全情况)。

    1. 接下来,我在IIS服务器上的绑定中使用了SSL证书。

    2. 我访问了Chrome中的页面。正如所料,证书标记为不安全。

    3. enter image description here

      1. 我保存了证书的本地副本,并手动将证书副本添加到我的Chrome受信任CA.但是,证书仍然无法识别:

        enter image description here

      2. 证书的详细信息如下:

      3. enter image description here

        现在,我正在访问并在主机文件中设置的证书和URL都是相同的。没有拼写错误。我的问题:我使用New-SelfSignedCertificate错了吗?或者我在其他地方做错了什么?

2 个答案:

答案 0 :(得分:15)

对于其他任何可能坚持这个问题的人来说,他们的理智是什么,最终为我工作的答案是:

New-SelfSignedCertificate -Subject *.my.domain -DnsName my.domain, *.my.domain -CertStoreLocation Cert:\LocalMachine\My -NotAfter (Get-Date).AddYears(10)

答案 1 :(得分:-1)

SSL通配符证书应该有一个带有通配符的主题,其余的DNS名称应该在主题备用名称中,该名称由DNSName参数提供。我相信下面的例子会做你想要的。

实施例

New-SelfSignedCertificate -Subject *.myhostname01  -DnsName myhostname01 -CertStoreLocation Cert:\LocalMachine\My 
dir Cert:\LocalMachine\My\ | Where-Object {$_.Subject -eq 'CN=*.myhostname01'} | ForEach-Object {
    [PSCustomObject] @{
        Subject = $_.Subject
        SAN = $_.DnsNameList
    }
}

结果

Subject           SAN
-------           ---
CN=*.myhostname01 {myhostname01}

参考