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

Posted

技术标签:

【中文标题】如何恢复丢失的 IIS Express SSL 证书?【英文标题】:How do I restore a missing IIS Express SSL Certificate? 【发布时间】:2013-11-30 23:10:26 【问题描述】:

在 IIS Express 中设置 HTTPS 后,根据 this 和 this 等文章,我无法实际使用 HTTPS 加载 IIS Express 站点。在 Chrome 中,我只得到:

此网页不可用(错误代码为“ERR_CONNECTION_RESET”)

...在 IE 中我只得到:

Internet Explorer 无法显示网页

...当我按照这些文章中的说明进行操作时。

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

【问题讨论】:

我也曾尝试在端口 443 上运行 IISExpress(或者实际上在 44300-44399 范围之外的任何端口上) 注意:即使存在 IIS Express 本地主机证书并且看起来没问题,这个问题的公认答案也适用。 对于 Visual Studio 2017,请参阅 ***.com/questions/44142037/… 【参考方案1】:

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

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

证书回来了:

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

【讨论】:

也适用于我,但就我而言,证书在那里。不知道为什么,但这导致了同样的错误。所以我删除了证书,并“修复”重新安装了这个,瞧。非常感谢。 Windows 10 用户注意事项:修复仅在控制面板中,不在添加删除程序应用程序中。好主意msft。 更快的方法是启动 Jexus Manager 并生成新证书,然后绑定到您的站点。 jexusmanager.com 当然,它还没有修复损坏的证书绑定,我会看看如何让它成为一键式功能。 VS2019 用户注意事项:“修复”将不起作用,因为 Visual Studio 安装程序没有将 MSI 文件放在控制面板预期的位置。但是,在同一目录中有一个 _package.json 文件,它包含 MSI 文件的 URL。您可以手动运行它,也可以将其复制到控制面板所需的位置。 IIS Express 上的修复似乎对我不起作用。我正在使用 Visual Studio 2019,但我无法找到正确的 MSI 来手动运行它。【参考方案2】:

对于 Visual Studio 2015、IIS Express 10、Windows 10,这些选项对我不起作用。 IIS Express 10 没有修复选项。

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

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

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

将 urlToYourSite 替换为您的网址。

例如

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

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

希望对您有所帮助。

【讨论】:

这对我尝试在端口 443 上运行 IISExpress 很有用。+1 这个解决方案对我很有效。 Windows 10、Visual Studio 2015、IIS Express 10。 如果这里有人在获取 IIS Express 使用的特定端口时遇到问题,您可能需要检查是否有人在 IIS 中使用该端口注册了站点。那是我今天的一天。 在 Windows 10 中,IIS Express具有一个修复选项。您需要通过控制面板。接受的答案对我有用。 如果你厌倦了使用命令行,你可以使用 Jexus Manager 来做同样的事情,blog.lextudio.com/…【参考方案3】:

另请注意,要使 IIS Express 与 SSL 一起使用,使用的端口需要在 44300 到 44399 范围内 (http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-without-administrative-privileges)。

因此,如果您在 Visual Studio 中使用 IIS Express,请确保所选端口在所需范围内: vs setting for iis express

【讨论】:

在使用 Bernie White 的答案中的命令后,我能够使用此范围之外的端口,没有任何问题。 Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0 谢谢!这为我解决了这个问题。奇怪的是 Visual Studio 没有对此发出警告。 44300-44399 只是映射了证书的默认端口范围。您可以通过调用netsh 轻松创建类似的证书映射,或者直接使用Jexus Manager,blog.lextudio.com/…【参考方案4】:

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

    如here 所述打开证书 MMC 管理单元 找到您的本地主机证书,例如在 Personal...Certicates 下并获取其指纹:
      打开 localhost 证书的属性对话框并找到 Thumbprint 属性 将指纹值粘贴到记事本(或其他)中,并删除开头的空格和任何特殊字符
    查找 IIS Express 项目的端口值:
      转到 Visual Studio 中的项目属性并找到“SSL URL”值,例如“https://localhost:44300/MyApp”。 在本例中,44300 是端口号。如果您的不同,请在后面的命令中更改该值。
    在管理命令提示符(不是 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_spaces appid= 123a1111-2222-3333-4444-bbbbcccdddee

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

更多参考请参见Handling URL Binding Failures in IIS Express。

【讨论】:

更直观的方式是使用 Jexus Manager,blog.lextudio.com/…,这样您就不必记住证书哈希等细节。 如果您收到“参数不正确”。错误 - 先使用此 appid,然后使用 certash。示例:netsh http add sslcert ipport=0.0.0.0:44300 appid=C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E certash=your_cert_hash_with_no_spaces【参考方案5】:

对于新的 Chrome 58,以下答案无济于事。我刚刚花了 1 小时卸载/重新安装证书并试图找出问题所在。

显然 Chrome 58 将拒绝证书,因为“missing_subjectAltName”

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

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

来源是,点赞属于:https://***.com/a/38926117/2089232 :)

【讨论】:

见***.com/questions/43676993/… 另见blog.lextudio.com/…【参考方案6】:

我想添加这个,因为它很荒谬,但也许它会对某人有所帮助。请记住,我以前从未打开过我的项目属性,所以我不知道这是怎么发生的(我自己没有更改,也没有机会更改),但是在 Project > Properties > Web 我的 SSL url 被列为我常用的 URL但作为 http 而不是 https(以前是 https,因为它以前可以工作)。我完成了此页面上列出的所有步骤,卸载了 VS,然后卸载了 IIS,最后注意到应该是 https://mySSLURL 的错误(但在 https 中缺少 s)。一旦我将 http 更改为 https,一切都会再次运行。

【讨论】:

谢谢。为我节省了很多卸载/重新安装!【参考方案7】:

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

Chorme Default Port Ranges for DEV SSL

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

希望这会有所帮助!

【讨论】:

这是唯一对我有用的解决方案。【参考方案8】:

您可以重新安装 IIS Express 10.0(或您需要的任何版本)来修复丢失的证书。 Download from Microsoft here

【讨论】:

以上是关于如何恢复丢失的 IIS Express SSL 证书?的主要内容,如果未能解决你的问题,请参考以下文章

如何安装SSL证书 4种方法来安装SSL证书

[奥塔在线]IIS Express如何开启HTPPS访问

[奥塔在线]IIS Express如何开启HTPPS访问

[奥塔在线]IIS Express如何开启HTPPS访问

倒腾HTTPSNginx for Docker自签名SSL证书

IIS 绑定 HTTPS 域名