使用CloudFlare开启HTTP严格传输安全(HSTS)

HTTP Strict Transport Security (通常简称为HSTS, RFC 6797) 是一项网络安全技术,旨在帮助安全的HTTPS的Web服务器免受降级攻击。虽然HSTS能有效抵御网络攻击,但由于部署它相对困难导致这项技术尚未被广泛采用。CloudFlare的目的是改变这一点。

降级攻击(也称为SSL剥离攻击)是Web应用程序的严重威胁。这种类型的攻击是借助中间人发动攻击,攻击者可以将网页浏览器从一个正确配置的HTTPS Web服务器重定向到受Web攻击者控制的Web服务器。一旦攻击者成功地重定向用户,用户的个人隐私数据,包括Cookies,都可能会受到侵害。因为纯粹的SSL加密办法无法抵御这种攻击,所以才催生了HSTS技术。

SSL剥离攻击: 绕过SSL的保护然后发动攻击。

HSTS工作原理: 强制客户端使用 HTTPS 访问网站。过程如下:

  1. 用户第一次访问开启了 HSTS 功能的网站
  2. 在浏览器中留下一个包含max-age的HSTS缓存Strict-Transport-Security
  3. 用户在max-age保质期内再次访问网站,浏览器就会根据缓存中的HSTS设置自动跳转到HTTPS页面

CloudFlare提供的HSTS配置参数如下:

  • Enable HSTS (Strict-Transport-Security): On/Off.
  • Max Age (max-age): 即HSTS缓存的“生存时间”。一般建议设置成6个月,这样才能获得 Qualys SSL Labs 的 A+ 评级。Web浏览器会缓存和执行政策HSTS此值的持续时间。如果你将这个值设置为“0”,将会禁用HSTS功能。
  • Apply HSTS Policy to subdomains (includeSubDomains): 将HSTS网站策略应用到每个子域名。

有一点需要注意,一旦该网站的HSTS设置在你的浏览器上生效,你就只能通过HTTPS方式访问该网站。如果HTTPS的433端口被封闭或者安全证书过期,你的网站就无法访问了。所以,你需要建立一个长期稳定的SSL配置。 好在CloudFlare默认的SSL设置与HSTS完美兼容,很多问题也就迎刃而解了。

CloudFlare HSTS

使用CloudFlare开启H​​STS,你只需要登录到您的CloudFlare帐户在控制面板>Crypto>HTTP Strict Transport Security (HSTS) 点击开启HSTS并设置好相关参数就可以了。

测试网站的SSL安全等级: 进入https://www.ssllabs.com/ssltest/,输入你的网站域名就可以给你的网站做一次全面的SSL检查。

将网站域名提交到 HSTS Preload: 你可以先在CloudFlare开启HSTS Preload功能,然后将你的域名提交到 HSTS Preload List 等待审核通过。审核通过后,你的域名就会跟随此列表被推送到新版本的 Chrome, Firefox/Mozilla 和 Safari 浏览器中,从而实现更安全的HTTPS预加载。