IIS如何开启HSTS(HTTPS严格传输)

发布时间:2019-08-29 18:17:00 阅读:240
HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP。启用 HSTS 不仅仅可以有效防范中间人攻击,同时也为浏览器节省来一次 302/301 的跳转请求,如果配置了HSTS,网站则通过HTTP Strict Transport Security通知浏览器,这个网站禁止使用HTTP方式加载,浏览器应该自动把所有尝试使用HTTP的请求自动替换为HTTPS请求。

HTTP严格传输安全(英语:HTTP Strict Transport Security,缩写:HSTS)是一套由互联网工程任务组发布的互联网安全策略机制。网站可以选择使用HSTS策略,来让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险。

作用

HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器建立连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议(HTTP)响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效。

比如,https://example.com/ 的响应头含有Strict-Transport-Security: max-age=31536000; includeSubDomains。这意味着两点:

  1. 在接下来的31536000秒(即一年)中,浏览器向example.com或其子 域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击 超链接或在地址栏输入 http://www.example.com/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://www.example.com/ 发送请求。
  2. 在接下来的一年中,如果 example.com 服务器发送的TLS 证书无效,用户不能忽略浏览器警告继续访问网站。

HSTS可以用来抵御SSL剥离攻击。SSL剥离攻击是中间人攻击的一种,由Moxie Marlinspike于2009年发明。他在当年的黑帽大会上发表的题为“New Tricks For Defeating SSL In Practice”的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器建立HTTPS连接。它的前提是用户很少直接在地址栏输入https://,用户总是通过点击链接或3xx重定向,从HTTP页面进入HTTPS页面。所以攻击者可以在用户访问HTTP页面时替换所有https://开头的链接为http://,达到阻止HTTPS的目的。

HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器建立过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP

IIS开启HSTS

此方法未在IIS7/8.5版本测试,如果设置后网站出现500状态码则撤销更改;在配置HSTS前需要将http请求重定向到https请求上。

方法一:添加自定义HTTP响应头

在网站根目录下的web.config文件里添加以下代码:

	 <configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name=&quot;Strict-Transport-Security&quot; value=&quot;max-age=31536000&quot; />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration> 

方法二:利用URL重写工具

安装URL重写模块,并为具有HTTP和HTTPS绑定的单个网站配置重写规则。HTTP到HTTPS重定向可以由入站规则指定,而将STS标头添加到HTTPS回复可以通过出站规则来实现。

	<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name=&quot;Redirect HTTP to HTTPS&quot; stopProcessing=&quot;true&quot;>
                    <match url=&quot;(.*)&quot; />
                    <conditions>
                        <add input=&quot;{HTTPS}&quot; pattern=&quot;off&quot; />
                    </conditions>
                    <action type=&quot;Redirect&quot; url=&quot;https://{HTTP_HOST}/{R:1}&quot; redirectType=&quot;Permanent&quot; />
                </rule>
            </rules>
            <outboundRules>
                <rule name=&quot;Add the STS header in HTTPS responses&quot;>
                    <match serverVariable=&quot;RESPONSE_Strict_Transport_Security&quot; pattern=&quot;.*&quot; />
                    <conditions>
                        <add input=&quot;{HTTPS}&quot; pattern=&quot;on&quot; />
                    </conditions>
                    <action type=&quot;Rewrite&quot; value=&quot;max-age=31536000&quot; />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

如果配置以上代码后网站未出现500等错误,既可以打开浏览器测试HSTS是否配置成功。

测试HSTS是否成功

使用Google Chrome 浏览器打开站点,按下F12打开控制台,转到Network,点击列表中的页面,查看Response Headers中的消息头列表:

查看IIS是否配置了HSTS

如果有类似Strict-Transport-Security: max-age=31536000; includeSubDomains; preload的代码,则证明HSTS配置成功。


我们在微信上24小时期待你的声音
解答:网站优化,网站建设,搜索引擎优化,APP 开发,小程序开发

非常感谢您有耐心的读完这篇文章:"IIS如何开启HSTS(HTTPS严格传输)",此文章仅为提供更多信息供用户参考使用或为学习交流的方便。如果对您有帮助,请收藏我们的网址:https://www.91webs.cn


18617670560