我已经在我的开发机器(IIS 7.5 - Windows 7)上成功创建并使用了自签名证书。
为此,我生成了一个具有通用名称 (CN) = 的自签名证书,app.localhost
并将其导入到受信任的根证书颁发机构商店。然后我将相同的证书导入 IIS,并使用主机名 = 将其绑定到我的站点app.localhost
。
这很有效。
现在我正在开发一个在 下运行的 API api.localhost
。这也需要 SSL。因此,我像以前一样创建了一个新的自签名证书,只是我指定了 CN = *.localhost
。新证书已添加到受信任的根证书颁发机构存储并像以前一样导入到 IIS。两个站点 ( app.localhost
& api.localhost
) 都已成功绑定到通配符证书。
这不起作用。
Chrome 抱怨:
您尝试访问 api.localhost,但实际上您访问的是一个标识为 *.localhost 的服务器。
IE 也提出了类似的抱怨。
如何制作可用的自签名通配符证书?
答案1
正如 David Schwartz 所说,这不适用于顶级域名。但是它适用于任何低于顶级域名的域名。
在我的 c:\windows\system32\drivers\etc\hosts 文件中我添加了
127.0.0.1 mysitename.localhost.dev
这里 .dev 是顶层,所以我可以向 *.localhost.dev 发出通配符
我还没有用 IIS 做过这个,但是使用 apache 并指定
<VirtualHost *:80>
DocumentRoot C:/xampp/htdocs/hookd/mysite/public
ServerName mysitename.localhost.dev
</VirtualHost>
不幸的是,您必须在hosts
每个站点的 apache 配置中设置一个新条目,但这比签署新证书要容易得多。
答案2
如果你仔细想想,就会发现典型的浏览器不允许顶级域名的通配符证书,原因就很明显了。