如何将我的 IIS Express SSL 证书更改为适用于 Chrome 58+ 的证书?

How do I change my IIS Express SSL certificate for one that will work with Chrome 58+?

Chrome 58+ 不再支持 SSL 证书中的 CN,这意味着(至少在我的机器上)浏览托管在 IIS Express 中的网站会不断抛出安全警告。

如何将我的 IIS Express SSL 证书更改为适用于 Chrom 58+ 的证书?

这就是我解决这个问题的方法。可能有更简单的方法(我确定有!)

步骤 1 - 打开 Windows PowerShell(在管理员模式下)并生成如下证书:

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

确保指纹安全。

步骤 2 - 打开命令提示符(在管理员模式下)并 运行 这些命令。

第一个将删除端口 44300-44399 的当前 IIS Express 证书。

for /L %i in (44300,1,44399) do netsh http delete sslcert ipport=0.0.0.0:%i

下一步会将您的新证书添加到这些端口。 明显改变指纹

for /L %i in (44300,1,44399) do netsh http add sslcert ipport=0.0.0.0:%i certhash=33459ADA4D5329673604F43A073B7F43084818A7 appid={214124cd-d05b-4309-9af9-9caa44b2b74a}

我相信该 appid 适用于 IIS Express 10。您可能需要先检查您的 IIS Express appid 是否与我的相同。为此,请执行以下操作:

netsh http show sslcert

步骤 3 - 重新启动 IIS Express 和 Chrome,然后 运行 在 Chrome.[=14= 中启动您的站点之一]

它会再次给你安全警告。进入该页面,然后进入设置 > 高级设置,HTTPS/SSL 管理证书。 在这里,从个人导出证书并将证书导入受信任的根证书颁发机构(我做的是 .p7b)然后重新启动 Chrome.

再次尝试该站点 - 您现在应该是安全的。

您也可以在 Chrome 之外的 certmgr 中执行所有这些操作。

编辑:使用 certmgr 替代上述第 3 步的步骤:

  1. 点击 win 键并输入 "certmgr" 打开 Windows 证书管理器。
  2. 展开Certificates - Local Computer > Personal > Certificates 并找到您刚刚创建的证书(它应该颁发给 localhost,并且从当前日期起一年内到期)。
  3. Select 要复制的证书和 ctrl-c。
  4. 展开证书 - 本地计算机 > 受信任的根证书颁发机构 > 证书 并按 ctrl-v 进行粘贴。

Chris 提供的解决方案确实可以解决问题(谢谢!),但最终这应该由 visual studio 团队解决。您可以在这里投票以提请他们注意此问题: https://developercommunity.visualstudio.com/content/problem/48596/visual-studio-2017-151-264037-crashing-during-code.html

我一直在使用此设置,直到它在 Visual Studio 中得到修复:

chrome://flags/#allow-insecure-localhost

它只是避免了每次都必须允许安全异常,但它仍然会在您的浏览器栏中将 SSL 显示为无效(红色)。

Chris 的回答解决了问题,谢谢!因为我的整个团队都遇到了这个问题,所以我创建了一个小的 Powershell 脚本来 运行 Chris 回答中的步骤。

https://gist.github.com/camieleggermont/5b2971a96e80a658863106b21c479988

运行 这在提升模式下对我有用。

更直观的修复方法是使用 Jexus Manager,

  • 生成新证书。
  • 让Windows(和Chrome)相信它。
  • 将其绑定到站点。

我在 a blog post 中记录了确切的步骤。