SSL连接/使用IISExpress时连接重置

189

我第一次使用新版的Visual Studio 2013和IISExpress(之前在VS2010上使用ASP.net开发服务器)。我在调试项目时遇到了问题。

这是我在Chrome浏览器中看到的错误信息:

无法与服务器建立安全连接。这可能是服务器出现了问题,也可能是服务器要求客户端认证证书,而你没有该证书。 错误代码:ERR_SSL_PROTOCOL_ERROR

我更新了我的Properies->web文件,使项目URL现在使用一个https URL。但是,在进行更改后,我在启动时遇到了新的错误:

连接到本地主机被中断。 错误代码:ERR_CONNECTION_RESET

谢谢


查看我对类似问题的答案: https://dev59.com/5Yfca4cB1Zd3GeqPhVNg#29848227 - Bogac
3
在此发布是因为以下答案可能很容易被忽略。如果已接受的答案对您无效,请尝试使用此链接:https://dev59.com/4mIj5IYBdhLWcg3wpWlx - IWriteApps
更改端口号,对我有效。 - torun
我学会了在尝试被投票最多的答案之前先尝试被接受的答案,哈哈;如果我尝试了这个顺序 - 我就可以节省一些时间,而不是在这个神奇的计算机科学问题上浪费几个小时。无论如何,感谢你提出这个问题! - gawkface
27个回答

5
这篇文章中,我成功地采用了删除IISExpress和vs目录以及使用44300至44399(含)的SSL端口范围的方法。

谢谢这个 - 对我有用,除了我没有在VS中被提示信任证书 - 我太懒了,不想去处理它,所以会忽略警告并继续进行! - Dave

5

在我的情况下,我在443端口上运行时遇到了这个确切的错误,而(由于我不会在这里解释)换用另一个端口不是一个选项。为了让IIS Express在443端口上工作,我必须运行以下命令...

C:\Program Files\IIS Express>IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:443/ -UseSelfSigned

非常感谢Robert Muehsig最初在此发布解决方案。

https://blog.codeinside.eu/2018/10/31/fix-ERR_CONNECTION_RESET-and-ERR_CERT_AUTHORITY_INVALID-with-iisexpress-and-ssl/


4

我遇到了这个问题,我在FilterConfig.cs中为我的站点配置了全局需要https。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new RequireHttpsAttribute());
    }

我曾经忘记按照此教程中“启用 SSL”第四步的要求,将项目网址改为 https。这导致了您遇到的错误。

教程链接


4

我遇到了两次问题:

在IIS Express中的applicationhost.config文件中,绑定的顺序非常重要。一个绑定可能会比您的SSL绑定更具优先级,使其无法工作。

例如:

<site name="MySite007" id="1">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\myuser\projects\mysolutionfolder\MyProject.Service" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation=":8081:localhost" />
        <binding protocol="http" bindingInformation=":8080:" /><!-- evil binding -->
        <binding protocol="https" bindingInformation="*:44327:localhost" />
    </bindings>
</site>

您可能已经添加了类似第二个绑定的内容,以便能够从localhost之外访问您的WebService。由于该绑定侦听任何地址,因此它似乎会覆盖SSL绑定,即使使用了不同的端口。

删除恶意绑定或将其下移。


这个对我有用,谢谢! - richb

2
如果您需要使用44300-44399范围之外的端口,则可以使用以下方法:
  • 在IIS(不是Express)中创建一个新站点
  • 将HTTPS绑定到所需的端口
  • 对于SSL证书,请选择“ IIS Express Development Certificate”
  • 创建站点后,停止它,因为它实际上不需要运行
这样可以在该端口注册IIS Express开发证书,是我找到的最简单的解决44300-44399范围要求的方法。

2

以下内容仅为同事口述,仅供参考。据说这是Chrome浏览器强制使用https的问题。我通常使用Firefox浏览器,所以之前没有遇到过这个问题。我的同事使用Firefox或IE浏览器可以解决此问题。


1
"

'Digicert证书安装检查器'在这种情况下通常非常有帮助。

通过比较序列号,我能够验证正在尝试的SSL证书是我预期的那个。

"

enter image description here

对我来说,@Jason Kleban的答案才是实际问题,但这可以是一个非常有用的工具,用于检查加载哪个证书的基本断言。

哇,非常感谢。这是唯一对我有效的解决方案。 - Fernando Silva

1
我的问题是由Fiddler引起的。当Fiddler崩溃时,它偶尔会干扰你的代理设置。似乎只需启动Fiddler即可解决所有问题(也许它会以某种方式自行修复)。

1
我在运行Rider/VS时遇到了相同的问题,两者都使用IIS Express来运行。我在Postman、Chrome、Firefox和调用它的前端应用程序中都遇到了这个问题。
结果发现,因为我的笔记本电脑是在我开始为这家公司工作时为我准备的,之前的开发人员在第一次运行IIS Express时点击了“否”,表示不想使用开发人员证书。
在Windows 10上修复此问题的方法是进入“添加或删除程序”(从新UI中有一个链接,在右侧启动经典应用程序以添加和删除程序),然后修复IIS 10.0或8或您正在运行的任何版本。
然后再次尝试运行应用程序(我在VS中执行此操作,但假设Rider也会执行相同的操作),当询问是否要使用开发人员证书时,选择“是”。
浪费了数小时时间,但在那之后所有问题都得到了解决!

1

KASPERSKY问题!!我尝试了所有方法,如果我以管理员身份运行VS2019,则本地主机与SSL一起工作,但是在调试一段时间后连接会丢失,我必须重新运行应用程序。对我而言,唯一有效的方法是卸载Kaspersky,令人难以置信,几天前我尝试暂停Kaspersky保护,但它并没有解决问题,因此我放弃了防病毒软件问题,在尝试了几天的解决方案后,我恢复了防病毒软件问题,卸载了Kaspersky V 21.1 ...,尝试后发现可以正常工作,安装V 21.2 ...也可以正常工作,无需以管理员身份运行VS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接