关于https:如何恢复缺少的IIS Express SSL证书?

How do I restore a missing IIS Express SSL Certificate?

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

This webpage is not available (with error code"ERR_CONNECTION_RESET")

...而在IE中我只得到:

Internet Explorer cannot display the webpage

......当我按照那些文章中的指示。

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


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

Repair IIS Express

证书回来了:

IIS Express Development Certificate

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

Success!


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

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

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

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

用你的网址替换urlToYourSite。

例如

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

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

希望有所帮助。


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

  • 按照此处所述打开证书MMC管理单元
  • 找到您的localhost证书,例如在个人...证明并得到它的指纹:

  • 打开localhost证书的属性对话框并找到Thumbprint属性
  • 将指纹值粘贴到记事本(或其他)中,并删除空格和开头的任何特殊字符
  • 找到IIS Express项目的端口值:

  • 转到Visual Studio中的项目属性并查找"SSL URL"值,例如"https://开头本地主机: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值都不对应。

    有关进一步参考,请参阅在IIS Express中处理URL绑定失败。


    另请注意,要使IIS Express使用SSL,所使用的端口需要在44300到44399范围内(http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-没有行政-权限)。

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


    使用新的Chrome 58,以下答案中的任何内容都无济于事。我花了1个小时卸载/重新安装证书,并试图找出问题所在。

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

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

    铬://标志/#允许不安全,本地主机

    来源是和upvote属于:https://stackoverflow.com/a/38926117/2089232 :)


    我想补充一点,因为它很荒谬,但也许会帮助别人。请记住,我之前从未打开过我的项目属性,因此我不知道这是怎么发生的(我没有自己更改或有机会),但在Project> Properties> Web中,我的SSL URL被列为我常用的URL但是作为http而不是https(以前是https,因为它之前正在工作)。我完成了本页列出的所有步骤,卸载了VS,然后是IIS,最后注意到错误应该是https:// mySSLURL(但是错过了https中的s)。一旦我将http改为https,一切都恢复了。


    您可以重新安装IIS Express 10.0(或任何您需要的版本)来修复丢失的证书。从这里下载Microsoft