1、HTTPS 访问速度优化
1.1、Tcp fast open(简称TFO)
HTTPS与HTTP都是通过TCP协议进行传输的,即需要通过三次握手建立通讯连接,TFO的思路就是在一个RTT的时间内将应用层的数据跟syn包同时发送出去,节省请求次数。遗憾的是,TFO需要高版本内核,Linux3.7以后支持TFO,目前Windows暂不支持TFO。
2.2、HTTP Strict Transport Security (简称HSTS)
HSTS诞生之前,采取的方案:将用户HTTP请求302跳转到HTTPS,因为这种跳转方式是由浏览器触发的,服务器无法控制,存在如下风险:
1)不安全,302跳转暴露了用户的访问站点,容易被中间者劫持;
2)降低访问速度,302跳转不仅需要一个RTT,而且浏览器执行跳转也需要执行时间;
为了规避这种风险,HSTS就诞生了,其原理:服务端返回一个HSTS的http header,浏览器获取到HSTS的头部后,在一段时间内,无论输入www.baidu.com还是http://www.baidu.com,都会跳转到https://www.baidu.com。
2.3、Session resume (即“复用session”)
复用session的好处:
1)减少CPU消耗,因为不需要进行非对称密钥交换的计算。
2)提升访问速度,不需要进行完全握手阶段二,节省了一个RTT和计算时耗。
TLS协议目前提供两种方式实现session resume:
1、Session cache
Session cache实现原理就是使用客户端中的session id查询服务端的session cache,如果服务端有对应的缓存,则直接使用已有的session信息提早完成握手。
session cache两个缺点:
1)需要消耗服务端内存来存储session内容。
2)目前开源软件如nginx,apache只支持单机多进程间共享缓存,不支持多机间分布式缓存。
session cache优点:
1)session id 是TLS协议的标准字段,市面上的浏览器全部都支持session cache。
2、Session ticket
session ticket优点:
1)不需要服务端消耗大量资源来存储session内容。
session ticket 缺点:
1)session ticket只是TLS协议的一个扩展特性,目前的支持率不是很广泛,只有60%左右。
2)session ticket需要维护一个全局的key来加解密,需要考虑KEY的安全性和部署效率。