夜空中最靓的二狗子是如何让 HTTPS 快上加快的?

二狗子是某不知名网站的站长,他热衷于经过博客分享平常的一些工做、生活、技术等,立志要成为夜空中最靓的仔。html

可是前段时间有几个用户反馈,网站老是莫名会跳转到一个 xx 网站,除此以外访问速度也有点慢。做为夜空中最靓的仔,怎么可能会让劫持这种事情困扰用户,因而全站快速启用了 HTTPS。网站是安全了,可是有什么办法能够加快访问速度,二狗子再一次陷入了沉思。算法

HSTS

一个夜深人静的夜晚,二狗子开始深刻研究 HTTPS 。他从维基百科查找了 HTTPS 的传输过程,只有熟悉了整个过程才能更好了解如何优化 HTTPS。浏览器

image

二狗子想着 HTTPS 虽然已经启用,可是没法确认用户是直接访问 http:// 仍是 https:// ,按照广泛的用户习惯都是直接输入站点域名,再由浏览器直接补充协议类型。可是这就存在一个问题,若是在网站设置当用户访问域名的时候强制 https 进行 301 或者 302 跳转,可是这个过程当中使用到 HTTP 所以容易发生劫持,受到第三方的攻击。缓存

image

有什么更好的办法来避免这种状况呢?话说有矛就有盾,二狗子深刻研究发现 HSTS 是能够避免这种状况。安全

HSTS 是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 https://,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密连接,保护数据传输安全。服务器

HSTS 主要是经过服务器发送响应头的方式控制浏览器操做;网络

  1. 首先在服务器响应头中添加:
    Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
  2. 设置 max-age 参数,最长建议设置 6 个月;
  3. 当用户下次使用 http 访问,客户端就会进行内部 307 跳转;

开启 HSTS 能够有效防范攻击,同时省去 301/302 跳转时间,大大提高网站安全系数和用户体验。并发

HTTP/2

开启 HSTS 后,二狗子更加兴奋,决定不睡觉继续深刻研究。性能

image

二狗子在 IT 界混了那么久,最近频频据说 HTTP/2,但并不了解 HTTP/2 有哪些“威武”的地方,因而又开启了研究之旅。学习

HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议。它由互联网工程任务组(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工做小组进行开发。该组织于 2014 年 12 月将 HTTP/2 标准提议递交至 IESG 进行讨论,于 2015 年 2 月 17 日被批准。HTTP/2 标准于 2015 年 5 月以 RFC 7540 正式发表。

HTTP/2 相比较 HTTP 1.1 有如下几个改变:

  1. 采用二进制格式传输数据,而非 HTTP 1.x 的文本格式,二进制协议解析起来更高效。
  2. 采用多路复用,代替原来的序列和阻塞机制。全部就是请求的都是经过一个 TCP 链接并发完成。
  3. 服务器推送,服务端能够在发送页面 HTML 时主动推送其它资源,而不用等到浏览器解析到相应位置,发起请求再响应。例如服务端能够主动把 JS 和 CSS 文件推送给客户端,而不须要客户端解析 HTML 再发送这些请求。服务端能够主动推送,客户端也有权利选择接收与否。若是服务端推送的资源已经被浏览器缓存过,浏览器能够经过发送 RST_STREAM 帧来拒收。主动推送也遵照同源策略,服务器不会随便推送第三方资源给客户端。
  4. 头部压缩,HTTP/2 对消息头采用 HPACK(专为 HTTP/2 头部设计的压缩格式)进行压缩传输,可以节省消息头占用的网络的流量。

HTTP/2 到底有多快,有一个 HTTP 1.1 VS HTTP/2 的演示 demo,二狗子看到以后兴奋的睡不着觉。

image

按照这样优化下去,二狗子的网站访问速度立刻就要起飞了。

TLS 1.3

二狗子忽然想到,SSL 版本已经发布到 TLS 1.3,它是 TLS 协议中最新、最快和最安全的版本,相比旧版的 TLS 协议增长了多项新功能。经过简化 SSL 握手流程,提升了链接速度,减小了延迟,并经过移除有安全隐患的加密算法,提升了用户访问的性能、效率和安全性等等。

为了更好的了解 TLS 1.3 是如何工做的,二狗子又开始了新的学习之旅。

image

从上图能够看出,使用 TLS 1.2 须要两次往返( 2-RTT )才能完成握手,而后才能发送请求。

image

TLS 1.3 的握手再也不支持静态的 RSA 密钥交换,这意味着必须使用带有前向安全的 Diffie-Hellman 进行全面握手。从上图能够看出,使用 TLS 1.3 协议只须要一次往返( 1-RTT )就能够完成握手。

相比 TLS 1.2,TLS 1.3 的握手时间减半。这意味着访问一个移动端网站,使用 TLS 1.3 协议,可能会减小将近 100ms 的时间。

“不是 HTTPS 让网站变慢,而是网站优化的不够”,二狗子发出深深的感慨。通过一晚上的努力,终于给博客开启了 HSTS、HTTP/2 和 TLS 1.3,二狗子感受本身成为了博客界最靓的仔。d可是二狗子不知道的是,又拍云提供一站式 SSL 证书申请服务,HSTS、HTTP/2.0、TLS 1.3 等功能一键便可开启,分分钟就能让HTTPS快上加快。

推荐阅读:

当 “HTTP” 先生赶上“S”小姐

TLS 1.3 VS TLS 1.2,让你明白 TLS 1.3 的强大

相关文章
相关标签/搜索