如何将我的 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 步的步骤:
- 点击 win 键并输入 "certmgr" 打开 Windows 证书管理器。
- 展开Certificates - Local Computer > Personal > Certificates 并找到您刚刚创建的证书(它应该颁发给 localhost,并且从当前日期起一年内到期)。
- Select 要复制的证书和 ctrl-c。
- 展开证书 - 本地计算机 > 受信任的根证书颁发机构 > 证书 并按 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 中记录了确切的步骤。
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 步的步骤:
- 点击 win 键并输入 "certmgr" 打开 Windows 证书管理器。
- 展开Certificates - Local Computer > Personal > Certificates 并找到您刚刚创建的证书(它应该颁发给 localhost,并且从当前日期起一年内到期)。
- Select 要复制的证书和 ctrl-c。
- 展开证书 - 本地计算机 > 受信任的根证书颁发机构 > 证书 并按 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 中记录了确切的步骤。