使用IISExpress重置SSL连接/连接

Kev*_*vin 126 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

谢谢

Jas*_*ban 328

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

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

  • 我唯一遗憾的是,我只有一个支持这篇文章.在SO之前我是如何解决这种废话的? (48认同)
  • 您还可以使用`netsh http add sslcert ...`添加您想要使用的端口.在某些情况下有用. (6认同)
  • Crikey这吃了很多时间我永远都不会回来......`netsh`来救援,这值得一篇博文... (3认同)
  • 我发现这个端口号范围记录在[使用IIS Express文档中处理URL绑定失败的自定义SSL端口部分]中(https://docs.microsoft.com/en-us/iis/extensions/using) -iis快车/处理的URL,绑定失败 - 在-IIS-快递#中使用,一个定制的SSL端口). (3认同)
  • 在这里看到各种帖子后,说明“重置您的端口号”,您的帖子是我见过的唯一一个说明范围的帖子 - 因此是解决问题的帖子。[道夫帽] (2认同)
  • 仍然使用Visual Studio 2017/IIS Express 10 (2认同)
  • @DaniDev - 多年的准备,痛苦的动力,坚持不懈的岁月和幸运! (2认同)

小智 81

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

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

  • 在"开始"上,键入 - > mmc.exe
  • 文件 - >添加/删除管理单元...
  • 选择证书 - >添加> - >计算机帐户 - >本地计算机
  • 在"证书">"个人">"证书"下查看
  • 确保存在的localhost证书具有友好名称"IIS Express Development Certificate".如果没有,删除它.或者如果是多个,则删除全部.

在Visual Studio上,选择项目,然后在属性选项卡下,启用SSL = true.保存,构建和运行.IIS Express将生成新的"localhost"证书.

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

  • 它需要修复IIS Express.现在工作得很好.谢谢 (9认同)
  • 在我的情况下,IIS证书设置丢失,但光盘上有证书.在网站上设置SSL证书和更新HTTPS绑定有帮助.即使已在组合框中选择了ssl证书,重新设置https绑定也很重要. (2认同)
  • 在出现接受新证书的对话框之前,我必须关闭并重新打开 Visual Studio。 (2认同)

小智 40

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

  • 我通过将该行添加到URLrewrite并将端口更改为":44300-:44398"(请参阅​​下面的uosef答案)使其工作 (3认同)

Kar*_*hik 30

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

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

在安装过程中,IIS Express使用Http.sys保留端口44300到44399以供SSL使用.这使IISExpress的标准用户(没有提升权限)可以配置和使用SSL.有关详细信息,请参阅此处

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

netsh http show sslcert> sslcert.txt

  1. 在sslcert.txt中查找以下项目(在我的情况下,IIS Express在端口44300上运行)

IP:端口 :0.0.0.0:44300

证书哈希 :eb380ba6bd10fb4f597cXXXXXXXXXX

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

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

(单击ServerRoot - >在IIS() - >打开服务器证书下)

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

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中找到)或您要添加为新证书的默认证书.

PS感谢您的回答uosɐs(帮助我解决了这个问题)

  • 哈,把端口从53xxx改为44300对我来说是个窍门. (7认同)
  • 改变端口对我也有用.有谁知道为什么端口必须在这个范围内以及它配置的位置? (2认同)

Pus*_*ots 22

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

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

修复?

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


lop*_*oni 12

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

  1. 卸载了IIS Express 8.0
  2. 删除了IIS Express的Documents目录中的所有配置
  3. 重新安装IIS Express 8.0
  4. 在本地计算机上删除了项目并下载了TFS的干净版本
  5. 跑完项目 - 它然后运行SSL,我能够调试

我从这个帖子中得到了步骤.

希望这可以帮助.

  • 在我的情况下,它足以**修复IIS安装(在控制面板中). (5认同)
  • 我只是卸下iis express,然后重新安装它.现在它有效 (2认同)

Dha*_*shM 12

对我来说,它使用了博客中提供的解决方案。

C:\Program Files (x86)\IIS Express\IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned
Run Code Online (Sandbox Code Playgroud)

使用您的项目用于 https 的端口。


New*_*per 8

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

确保在将端口更改为以下范围后:44300 到 44399,地址也以 HTTPS

在此处输入图片说明


Aro*_*tte 7

就我而言,我在端口 443 上运行时遇到了这个确切的错误,并且(出于我不会在这里讨论的原因)切换到不同的端口不是一个选项。为了让 IIS Express 在端口 443 上工作,我必须运行此命令...

C:\Program Files\IIS Express>IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:443/ -UseSelfSigned
Run Code Online (Sandbox Code Playgroud)

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

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


Hac*_*ese 6

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

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

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

  • 您可以在证书管理单元中复制+粘贴证书,就像它是常规文件一样.花了我几年才发现. (2认同)

小智 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>
Run Code Online (Sandbox Code Playgroud)

我可以用Mr.djroedger的答案解决这个问题.通过更换

<add input="{HTTPS}" pattern="off" />
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)


小智 5

从本文中删除 IISExpress 和 vs 目录并使用 44300 到 44399(含)的 ssl 端口范围对我有用