1.首先需要购买SSL证书,可以到这里购买 https://wossl.com/

2.安装SSL后启用HSTS (如需协助可以加腾讯q:8766167)

1).Apache 下启用HSTS,配置参考:

配置文件里打开这行



LoadModule headers_module modules/mod_headers.so


虚拟主机443配置里增加一行:

<VirtualHost www.test.com:443>
  
   //下面增加这行:
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

</VirtualHost>

------------------------------
2).Nginx 下启用HSTS,配置参考:

server配置里增加这行:


add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

------------------------------

3).IIS下启用HSTS,配置参考:

在web.config 文件里 <system.webServer>配置下面加入:

<httpProtocol>
        <customHeaders>
            <add name="Strict-Transport-Security" value="max-age=31536000" />
        </customHeaders>
    </httpProtocol>

验证是否启用HSTS:输入域名验证:https://hstspreload.org/

===================================

HSTS防范中间人攻击,解决对 80 端口的劫持

HSTS,HTTP Strict Transport Security,简单说就是强制客户端使用 HTTPS 访问页面。其原理就是:

在服务器响应头中添加 Strict-Transport-Security,可以设置 max-age用户访问时,服务器种下这个头
下次如果使用 http 访问,只要 max-age 未过期,客户端会进行内部跳转,可以看到 307 Redirect Internel 的响应码变成 https 访问源服务器

这个过程有效避免了中间人对 80 端口的劫持。但是这里存在一个问题:如果用户在劫持状态,并且没有访问过源服务器,那么源服务器是没有办法给客户端种下 Strict-Transport-Security 响应头的(都被中间人挡下来了)。

启用 HSTS 不仅仅可以有效防范中间人攻击,同时也为浏览器节省来一次 302/301 的跳转请求,收益还是很高的。我们的很多页面,难以避免地出现 http 的链接,比如 help 中的链接、运营填写的链接等,这些链接的请求都会经历一次 302,对于用户也是一样,收藏夹中的链接保存的可能也是 http 的。