使用IISExpress重置SSL连接/连接

时间:2013-10-17 02:24:22

标签: ssl visual-studio-debugging visual-studio-2013

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

这就是我在Chrome中看到的内容:

无法与服务器建立安全连接。这可能是服务器的问题,或者可能需要您没有的客户端身份验证证书。 错误代码:ERR_SSL_PROTOCOL_ERROR

我更新了我的Properies - > Web文件,以便Project Url立即使用https URL。但是,在执行此操作后,我现在在启动时遇到新错误:

与localhost的连接中断。 错误代码:ERR_CONNECTION_RESET

由于

24 个答案:

答案 0 :(得分:295)

我收到了ERR_CONNECTION_RESET,因为我的Visual Studio 2013 / IIS Express配置应用端口号不在:44300-:44398 范围内。 (我不记得要忽略任何警告以获得该范围的 。)将端口号更改为此范围内的某些内容是我必须做的才能使其正常工作。

我在查看了netsh http show sslcert > sslcert.txt输出后点击了我最近阅读的有关端口号的内容时注意到了这一点。

答案 1 :(得分:75)

请务必删除之前的任何本地主机'这些证书可能与IIS Express生成的证书冲突。我有同样的错误(ERR_SSL_PROTOCOL_ERROR),在尝试了许多"解决方案后,我花了很多时间才弄明白。我的错误是我创建了自己的本地主机'证书,其中有两个。我不得不删除它们并让IIS Express重新创建它。

以下是检查和删除' localhost'的方法。证书:

  • 在“开始”中,键入 - > MMC.EXE
  • 文件 - >添加/删除管理单元...
  • 选择证书 - >添加> - >计算机帐户 - >本地电脑
  • 在证书下检查>个人>证书
  • 确保现有的localhost证书具有友好名称" IIS Express开发证书"。如果没有,删除它。如果是多个,请删除全部。

在Visual Studio上,选择项目,然后在属性选项卡下,启用SSL = true。保存,构建和运行。 IIS Express将生成一个新的本地主机'证书。

注意:如果它不起作用,请尝试以下操作:确保在删除' localhost&#39之前,在VS项目上禁用IIS Express并停止其上所有正在运行的应用程序;证书。此外,您可以转到'控制面板>计划'并修复IIS Express。

答案 2 :(得分:36)

如果您正在使用URLRewrite在web.config中强制SSL连接,则可能会重写您的本地主机地址以强制使用https。如果启用SSL的调试对您来说并不重要,并且您正在使用URLRewrite,请考虑将<add input="{HTTP_HOST}" pattern="localhost" negate="true" />添加到web.config文件的重写部分。它将停止重写任何本地主机地址,但将其保留在生产环境中。 如果您没有使用URLRewrite或需要使用SSL进行调试,http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx可能有所帮助。它适用于VS2010,但也适用于VS2013。

答案 3 :(得分:28)

我总结了帮助我解决这个问题的步骤:

  1. 确保SSL端口范围(由IIS Express使用)介于两者之间 44300-44398
  2.   

    在安装过程中,IIS Express使用Http.sys来保留端口44300   通过44399进行SSL使用。这使标准用户(没有   IISExpress配置和使用SSL的特权提升。对于   有关详情,请参阅here

    1. 在命令提示符下以管理员身份运行以下命令。这将在计算机中输出SSL证书绑定。从此列表中,找出IIS Express用于相应端口的证书:
    2.   

      netsh http show sslcert&gt; sslcert.txt

      1. 在sslcert.txt(在我的例子中是IIS)中查找以下项目 快递在港口44300)
      2. 运行
          

        IP:端口:0.0.0.0:44300

             

        证书哈希:eb380ba6bd10fb4f597cXXXXXXXXXX

             

        申请ID :{214124cd-d05b-4309-XXX-XXXXXXX}

        1. 另请查看IIS Express管理控制台(RUN(Ctrl + R) - &gt; inetmgr.exe) 并查找“服务器证书”中是否存在相应的证书
        2.   

          (单击ServerRoot - &gt;部分IIS() - &gt;打开服务器   证书)

          1. 如果您的localhost默认使用的步骤与步骤3中列出的证书不同,请继续执行以下步骤
          2.   

            netsh http delete sslcert ipport = 0.0.0.0:44300

                 

            netsh http add sslcert ipport = 0.0.0.0:44300 certhash = New_Certificate_Hash_without_space appid = {214124cd-d05b-4309-XXX-XXXXXXX}

            New_Certificate_Hash将是您的本地主机(我们在步骤4中找到)或您要添加为新证书的默认证书。

            P.S。感谢您的回答uosɐſ(帮助我解决了这个问题)

答案 4 :(得分:20)

我遇到的问题与我有关,在某个时间点,为本地主机启用HSTS而没有意识到这会破坏IIS Express中的http://localhost:someport

HSTS告诉浏览器(在我的情况下为Chrome)始终使用HTTPS请求URL。因此,即使我甚至没有为我的MVC 5应用程序启用SSL,浏览器仍然会尝试使用URL而不是HTTP来访问我的网站。

修复?

  1. 冲浪到chrome:// net-internals / #hsts
  2. 在删除部分中,输入&#34; localhost&#34;并从Chrome中删除记录。

答案 5 :(得分:11)

上述选项均不适合我。我必须做以下事情:

  1. 卸载IIS Express 8.0
  2. 删除了我的Documents Express目录中的所有配置
  3. 重新安装IIS Express 8.0
  4. 在我的本地计算机上删除了项目,并为TFS下载了一个干净的版本
  5. 跑完项目 - 然后通过SSL运行,我可以调试
  6. 我从this thread.

    获得了步骤

    希望这会有所帮助。

答案 6 :(得分:6)

我遇到的问题与@Jason Kleban的答案有关,但是我在IIS Express的Visual Studio属性中的设置存在一个小问题。

请确保在将端口更改为44300至44399的范围后,地址也以self.window = UIWindow(frame: UIScreen.main.bounds) let storyboard = UIStoryboard(name: "Main", bundle: nil) let homepage = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") self.window?.rootViewController = homepage let rootView = self.window!.rootViewController let vc = UIStoryboard.init(name: "Ride", bundle: nil).instantiateViewController(withIdentifier:"payAfterPostRequestViewController") as! payAfterPostRequestViewController rootView!.present(vc, animated: true, completion: nil) 开头

enter image description here

答案 7 :(得分:5)

我在Visual Studio 2015中遇到同样的问题。因为我在web.config中使用SSL绑定

<rewrite>
   <rules>   
     <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
       <match url="(.*)" />
       <conditions>
          <add input="{HTTPS}" pattern="off" />
       </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
     </rule>
   </rules>
</rewrite>

我可以用Mr.djroedger的答案解决问题。通过替换

<add input="{HTTPS}" pattern="off" />

<add input="{HTTP_HOST}" pattern="localhost" negate="true" />

进入我的web.config,所以我的代码是

<rewrite>
  <rules>   
    <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
         <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
      </conditions>
         <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
    </rule>
 </rules>
</rewrite>

答案 8 :(得分:5)

在我的情况下,我创建了一个自签名证书并使其正常工作,但我在浏览器中收到错误,因为证书不受信任。因此,我将证书移到了受信任的根证书颁发机构&gt; “证书”管理单元中的“证书”文件夹。它工作正常,然后我关闭了Visual Studio当天。

第二天,我开始了我的项目,收到了原始问题中提到的错误。问题是您配置IISExpress的证书必须存在于Personal&gt;中。证书文件夹或HTTPS将停止工作。 IIS Express成功启动后,您可以将证书拖回受信任位置。它将继续工作,直到您重新启动IIS Express。

不想每次来回拖动证书都大惊小怪,我只是在两个地方都放了一份证书副本,现在一切正常。

答案 9 :(得分:4)

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

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

我忘记将项目网址更改为https:来自ENABLE SSL第4部分下的本教程http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app-membership-oauth-sql-database/。这导致了您获得的错误。

答案 10 :(得分:3)

两次发生的另一个问题:
在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绑定,尽管使用了不同的端口。

删除邪恶绑定或将其向下移动。

答案 11 :(得分:2)

这是因为同事无意中听到的轶事,但据称这是Chrome迫使https的问题。我通常在firefox中启动,所以我之前没有看到过这个问题。使用firefox或者为我的同事工作。

答案 12 :(得分:1)

就我而言,尝试了三天之后,只需通过“以管理员身份运行”启动Visual Studio即可解决。

答案 13 :(得分:0)

我的问题是由提琴手造成的。当Fiddler崩溃时,它偶尔会与您的代理设置混淆。简单地启动Fiddler似乎解决了所有问题(也许它会以某种方式修复自己)。

答案 14 :(得分:0)

我刚刚重建了我的电脑。这个帖子给了我线索,我在项目设置&gt; Web中意识到,项目被配置为使用HTTP和HTTP端口。通过将其更新为HTTPS和正确的HTTPS端口,一切都开始重新运行。

答案 15 :(得分:0)

要继续关于在44300和44399之间设置SSL端口的其他答案,我无法在Visual Studio中更改SSL Enabled属性,也无法设置特定的SSL URL。其他答案,如修复IIS Express没有帮助。解决方案是进入与sln文件并行的.vs文件夹,打开config子文件夹,然后编辑applicationhost.config文件。然后,我手动添加了https行并重新启动了VS.

<binding protocol="http" bindingInformation="*:24941:localhost" />
                <binding protocol="https" bindingInformation="*:44301:localhost" />

答案 16 :(得分:0)

&#39; Digicert certificate installation checker&#39;在这种情况下通常很有帮助。

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

enter image description here

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

答案 17 :(得分:0)

在我的情况下,我只是忘记了我在完整IIS中为(在我的情况下)https://localhost:44300设置了绑定。你不能同时拥有这两个!

答案 18 :(得分:0)

this article删除IISExpress和vs目录并使用ssl端口范围为44300到44399(含)对我来说很有效

答案 19 :(得分:0)

如果您需要使用44300-44399范围之外的端口,则可以采用以下解决方法:

  • 在IIS(不是Express)中创建一个新站点
  • 将HTTPS绑定到所需的端口
  • 对于SSL证书,请选择 IIS Express开发证书
  • 创建网站后,请停止它,因为它实际上并不需要运行

这会向该端口注册IIS Express开发证书,这是我发现可以满足44300-44399范围要求的最简单方法。

答案 20 :(得分:0)

在我的情况下,调试时将localhost URL重定向到https://localhost。这是一瞬间发生的,没有任何改变。我通过向浏览器进行重新加载来解决此问题。这里的link

答案 21 :(得分:0)

就我而言,我正在端口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/

答案 22 :(得分:0)

卡巴斯基问题!!我已经尝试了一切,如果我以管理员身份运行VS2019,则使用SSL的localhost可以正常工作,但是在调试一段时间后失去了连接,我不得不重新运行该应用程序。唯一可行的方法是几天前卸载Kaspersky,令人难以置信,几天前,我试图暂停Kaspersky保护,但仍未解决问题,因此,我放弃了防病毒问题,在尝试了几天后,我恢复了防病毒问题,卸载了Kaspersky V 21.1 ...,经过尝试和工作,安装了V 21.2 ...,并且即使不以管理员身份运行VS也可以正常工作

答案 23 :(得分:0)

我在运行Rider / VS时遇到了同样的问题,都使用IIS Express来运行它。我遇到了邮递员,Chrome,Firefox和前端应用程序调用它的问题。

结果是因为当我开始为这家公司工作时我的笔记本电脑适合我使用,因此以前的开发人员在被问到是否要在他第一次运行IIS Express时是否要使用开发人员证书时单击了

此问题已在Windows 10上通过以下方法修复:添加删除程序(在新UI中,右侧有一个链接可启动用于添加和删除程序的经典应用程序),然后修复IIS 10.0或8或您运行的任何版本

然后尝试再次运行该应用程序(我在VS中这样做,但假定Rider会执行相同的操作),当系统询问您是否要使用开发人员证书时,请单击

时间浪费在此上,但在此之后全部归类!