如何还原丢失的IIS Express SSL证书?


134

在IIS Express中,建立HTTPS按照这样的文章后,这个这个,我无法实际加载使用HTTPS的IIS快递网站。在Chrome中,我只会得到:

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

...在IE中,我只会得到:

Internet Explorer无法显示该网页

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

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


2
我也碰巧试图在端口443上运行IISExpress(或实际上在44300-44399范围之外的任何端口上)
Gerardo Grignoli

注意:即使存在IIS Express本地主机证书并且看起来还不错的情况下,也可以使用对此问题的可接受答案。
haymansfield'8

对于Visual Studio 2017,请参见stackoverflow.com/questions/44142037/…–
RickAndMSFT

Answers:


193

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

修复IIS Express

证书又回来了:

IIS Express开发证书

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

成功!


1
我也可以使用,但就我而言,证书在那里。不知道为什么,但是导致了同样的错误。所以我删除了证书,然后将“修复”重新安装回去,瞧。非常感谢。
Darius

37
Windows 10用户注意事项:修复仅在控制面板中,而不在添加删除程序应用中。MSFT绝妙的主意。
克里斯·韦伯

1
一种更快的方法是启动Jexus Manager并生成新证书,然后绑定到您的站点。jexusmanager.com当然,它还不能解决断开的证书绑定问题,我将看到如何使它成为一键式功能。
Lex Li

修复工作正常,但是我必须使用MMC删除所有现有证书。我遇到的问题是我没有从localMachine中以管理员身份删除它们。确保您以提升的权限运行MMC!
ranieuwe

6
VS2019用户注意:“修复”将不起作用,因为Visual Studio安装程序未将MSI文件放在控制面板期望的位置。但是,_package.json 该目录中有一个文件,其中包含MSI文件的URL。您可以手动运行该文件,也可以将其复制到“控制面板”期望的位置。
克里斯·唐纳利

155

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

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

在提升的命令提示符下运行:

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重新启动了我的站点,它提示自动信任自签名证书。

希望有帮助。


3
这对我尝试在端口443上运行IISExpress起作用。+1
Gerardo Grignoli

这个解决方案对我来说很棒。Windows 10,Visual Studio 2015,IIS
Glenn

1
如果此处有人在获取IIS Express使用的特定端口时遇到问题,则可能要检查是否有人使用该端口在IIS中注册了站点。今天是我今天。
克里斯·马里西奇

2
在Windows 10中,IIS Express 具有修复选项。您需要通过控制面板。接受的答案对我有用。
Joerage

1
如果您厌倦了使用命令行,可以使用Jexus Manager来做同样的事情,blog.lextudio.com/…
Lex Li

40

有时,此错误是由于为本地主机安装了其他证书而引起的。如果是这种情况,则无需还原IIS Express证书。相反,您可以执行以下操作告诉IIS Express使用您现有的证书:

  1. 打开证书MMC管理单元中所述这里
  2. 在“ Personal ... Certicates”下找到您的本地主机证书,并获取其指纹:
    1. 调出localhost证书的属性对话框,并找到Thumbprint属性
    2. 将指纹值粘贴到记事本(或其他内容)中,并删除开头的空格和任何特殊字符
  3. 找到您的IIS Express项目的端口值:
    1. 转到Visual Studio中的项目属性,然后找到“ SSL URL”值,例如“ 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_spaces appid= {123a1111-2222-3333-4444-bbbbcccdddee}

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

有关更多参考,请参见在IIS Express中处理URL绑定失败


2
一种更直观的方法是使用Jexus Manager,blog.lextudio.com /…,那么您就不必记住证书哈希等详细信息。
Lex Li

如果收到“参数不正确”。错误-请先使用此appid,然后再使用certhash。例如:netsh http add sslcert ipport = 0.0.0.0:44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi

36

另外请注意,要使IIS Express与SSL配合使用,所使用的端口必须在44300到44399之间(http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-没有行政特权)。

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


3
在使用Bernie White的答案中的命令后,我可以使用此范围之外的端口,而不会出现任何问题。Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas

1
谢谢!这为我解决了这个问题。奇怪Visual Studio对此没有警告。
Erwin Mayer

4
44300-44399只是映射了证书的默认端口范围。您可以通过调用轻松地创建类似的证书映射netsh,或者直接使用Jexus Manager,blog.lextudio.com /…
Lex Li

12

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

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

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

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

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




2

我想添加此内容,因为它很可笑,但也许会对某人有所帮助。请记住,我之前从未打开过我的项目属性,所以我不知道这是怎么发生的(我自己没有更改或有机会),但是在“项目”>“属性”>“ Web”中,我的SSL URL被列为我的常用URL但以http代替https(以前是https,因为它以前可以工作)。我经历了本页上列出的所有步骤,卸载了VS,然后是IIS,最后注意到应该是https:// mySSLURL的错误(但缺少https中的)。一旦我将http更改为https,一切将再次起作用。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.