如何恢复丢失的 IIS 快速 SSL 证书?

在 IIS Express 中设置 HTTPS 后,根据 这个这个等文章,我无法使用 HTTPS 实际加载 IIS Express 站点。在 铬合金中,我只能得到:

此网页不可用(错误码为“ ERR _ CONNECTION _ RESET”)

IE我只能看到:

Internet Explorer 不能显示该网页

... 当我按照那些文章里的说明去做的时候。

这似乎与 IIS Express 自动安装的“ IIS Express 开发证书”已被删除有关。如何重新安装此证书?

117249 次浏览

Windows10用户: 修复仅在控制面板中,而不在添加删除程序应用程序中。我通常运行 appwiz.cpl 来启动旧的控制面板 applet 并从那里运行修复程序。

Windows 7和8.1: 在添加/删除程序并选择 IIS Express 上的“修复”选项之后,证书已经重新安装,现在我可以使用 HTTPS 启动 IIS Express 站点。

Repair IIS Express

证书回来了:

IIS Express Development Certificate

我现在可以使用 HTTPS 启动 IIS Express 站点:

Success!

有时出现此错误是因为为 localhost 安装了 与众不同证书。如果是这种情况,则不需要恢复 IISExpress 证书。相反,您可以执行以下操作来告诉 IISExpress 使用您现有的证书:

  1. 按照 给你所述打开证书 MMC 管理单元
  2. 找到你的本地主机证书,例如在“个人... 证书”下找到它的拇指指纹:
    1. 打开 localhost 证书的属性对话框,找到 Thumbprint 属性
    2. 将拇指指纹值粘贴到记事本(或其他东西)中,并删除开头的空格和任何特殊字符
  3. 查找 IIS Express 项目的端口值:
    1. 转到 VisualStudio 中的项目属性并查找“ SSLURL”值,例如“ https://localhost:44300/MyApp”。
    2. 在本例中,端口号是44300。如果您的端口号不同,请在后面的命令中更改该值。
  4. 在管理命令提示符(而不是 Powershell)中使用以下命令:

netsh http delete sslcert ipport=0.0.0.0:44300

Netsh http add sslcert ipport = 0.0.0.0:44300 certhash = your _ cert _ hash _ with _ no _ space appid = {123a1111-2222-3333-4444-bbbbccdddee }

上面命令中的 Guid 可以替换为您生成的 Guid。它不对应于任何现有的 IISExpress 值。

如需进一步参考,请参阅 处理 IIS Express 中的 URL 绑定故障

还要注意,对于使用 SSL 的 IISExpress,所使用的端口需要在44300到44399范围(http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-without-administrative-privileges)之间。

因此,如果您在 VisualStudio 中使用 IISExpress,请确保所选端口在所需的范围内: 与快递的设定

对于 VisualStudio2015、 IISExpress10、 Windows10,这些选项不适合我。IIS Express 10没有修复选项。

我设法用 C:\Program Files (x86)\IIS Express上的 IisExpressAdminCmd.exe命令解决了这个问题。

从提高的命令提示符运行:

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:urlToYourSite -UseSelfSigned

用 url 替换 urlToYourSite。

例如:。

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned

之后,我关闭了 IISExpress 并从 VisualStudio 重新启动了我的站点,它提示我自动信任自签名证书。

希望能帮上忙。

对于新的 Chrome58,下面的答案没有任何帮助。我刚刚花了一个小时卸载/重新安装证书,并试图找出问题所在。

显然 Chrome 58会因为“ miss _ subjectAltName”而拒绝证书

解决方案是使用“ badidea”密码短语,或者如果你需要打开弹出窗口进行登录,你必须使用:

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

资料来源是: https://stackoverflow.com/a/38926117/2089232:)

我想加上这个,因为这很荒谬,但也许能帮到别人。请记住,我以前从未打开过我的项目属性,所以我不知道这是如何发生的(我自己没有改变这一点,也没有机会) ,但在项目 > 属性 > Web 中,我的 SSL URL 被列为我通常的 URL,但是作为 http 而不是 https (以前是 https,因为它以前是工作的)。我遍历了这个页面上列出的所有步骤,卸载 VS,然后卸载 IIS,最后注意到应该是 https://mySSLURL的错误(但在 https 中缺少 s)。一旦我将 http 更改为 https,一切就都恢复正常了。

您可以重新安装 IISExpress10.0(或任何您需要的版本)来修复丢失的证书

在将我的 VS 2017更新到最新版本并创建了一个新的(。Net) MVC/WebAPI 项目(从模板)。我可以通过调整端口号使其在正确的范围内来解决这个问题

默认端口范围

我在这里找到了: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

希望这个能帮上忙!