此站点无法提供安全连接(ERR_SSL_PROTOCOL_ERROR)

问题描述 投票:0回答:7

当我在 web.config 中添加 URL 重写代码,然后将其发布到 azure 中时。即使我尝试使用 http 访问网站,它也会自动重定向到 https。

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

但是当我在本地计算机上运行相同的代码时,会出现以下错误。

此网站无法提供安全连接

enter image description here

当我在本地机器上运行上述代码时,如何解决上述错误?

asp.net security azure url-rewriting web-config
7个回答
17
投票

这总是能解决我的问题。

  • 在解决方案资源管理器中,单击您的项目。
  • 按 F4 键(查看属性)。
  • 复制 URL(不是 SSL URL)。
  • 将 URL 粘贴到 Web 选项卡上的项目 URL 中,然后保存。
  • 在解决方案资源管理器中,单击您的项目。
  • 按 F4 键(查看属性)。
  • 将 SSL Enabled 更改为 false。
  • 将其改回 true。应该有一个新的 SSL URL。复制它。
  • 将新的 SSL URL 粘贴到 Web 选项卡上的项目 URL 中。单击创建虚拟目录。
  • 单击覆盖应用程序根 URL,然后粘贴 SSL URL。保存。

14
投票

我个人所做的就是将重写配置放入 Web.Release.config 中,因为让它在本地工作有点繁琐。

问题是 IIS Express 将在不同的端口上公开 HTTP 和 HTTPS,因此,如果您从

http://localhost:1234
重定向到
https://localhost:1234
,它根本无法工作,因为 IIS Express 在类似
https://localhost:44300
之类的端口上公开 HTTPS。

您可以在 IIS Express 上启用 SSL/TLS(您应该这样做),但我只会为发布模式保留重写规则。

这是一个示例 Web.Release.config 文件:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
  <system.webServer>
    <rewrite xdt:Transform="Insert">
      <rules>
        <!-- Redirects users to HTTPS if they try to access with HTTP -->
        <rule
          name="Force HTTPS"
          stopProcessing="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true"/>
          </conditions>
          <action
            type="Redirect"
            url="https://{HTTP_HOST}/{R:1}"
            redirectType="Permanent"/>
        </rule>
      </rules>
      <outboundRules>
        <!-- Enforces HTTPS for browsers with HSTS -->
        <!-- As per official spec only sent when users access with HTTPS -->
        <rule
          xdt:Transform="Insert"
          name="Add Strict-Transport-Security when HTTPS"
          enabled="true">
          <match serverVariable="RESPONSE_Strict_Transport_Security"
              pattern=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="on" ignoreCase="true" />
          </conditions>
          <action type="Rewrite" value="max-age=31536000" />
        </rule>
      </outboundRules>
    </rewrite>
  </system.webServer>
</configuration>

请注意,我在这里还添加了 HSTS。它将

<rewrite>
元素插入到发布模式下的 Web.config 中。
<system.webServer>
元素已存在于 Web.config 中,否则我将插入该元素。


1
投票

您必须将 Visual Studio Server 配置为与 HTTPS 一起使用。 请点击此链接了解详情:
HTTPS 与 Visual Studio 的内置 ASP.NET 开发服务器


0
投票

我使用旧版本的 Chrome 网络浏览器解决了这个问题。

这是旧版 Chrome 版本列表,您可以在其中下载并安装它。

60.0.3112.90 - Ubuntu 是适合我的版本。

也许它比新版本慢一点,但我发现它对于生产来说非常好(:


0
投票

我发现有一段 JavaScript 代码可以将网站从 http 重定向到 https。因此,请尝试探索您的环境是否有其他代码导致该问题。希望这能有所帮助。谢谢


0
投票

我刚刚更改了项目属性的 Web 选项卡中的 URL,以使用以 443 开头的 PORT,例如44301。另外请务必将http更改为https。它对我有用。


0
投票

就我而言,IIS Express 的配置很复杂。一旦我删除(或重命名为备份).vs 文件夹并让 Visual Studio 重新创建它。

© www.soinside.com 2019 - 2024. All rights reserved.