此站点无法提供安全连接

时间:2017-04-11 06:50:24

标签: asp.net security azure url-rewriting web-config

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

<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

如何在本地计算机上运行上述代码时解决上述错误?

4 个答案:

答案 0 :(得分:6)

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

问题是IIS Express会在不同的端口上公开HTTP和HTTPS,所以如果你从http://localhost:1234重定向到https://localhost:1234,它就行不通,因为IIS Express会在某些东西上暴露HTTPS比如https://localhost:44300

您可以在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中。 {。1}元素已经存在于Web.config中,否则我将插入它。

答案 1 :(得分:0)

您必须将Visual Studio Server配置为与HTTPS一起使用。 请仔细阅读此链接:
HTTPS with Visual Studio's built-in ASP.NET Development Server

答案 2 :(得分:0)

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

这是list of older chrome versions,您可以在其中下载并安装它。

60.0.3112.90-对于Ubuntu来说,它对我来说很好用。

也许它的速度比新版本要慢一些,但我发现它对生产相当不错(:

答案 3 :(得分:0)

最后,我发现有一个JavaScript代码将网站从http重定向到https。因此,如果还有其他代码负责该问题,请尝试探索您的环境。希望这会有所帮助。谢谢