HTTPS对网站性能SEO有哪些影响

1Preface

HTTPS在保护用户隐私、防止流量劫持方面起到了关键作用,但同时HTTPS也会降低用户的访问速度,增加网站服务器的计算资源消耗。

本文主要介绍https对用户体验的影响。

这篇文章最早发表在百度运维部官方博客

2 HTTPS对访问速度的影响

在介绍速度优化策略之前,我们先来看看HTTPS对速度的影响。影响主要来自两个方面:

1。协议交互增加了网络RTT(往返时间)。

2。与加密和解密相关的计算需要时间。

下面分别介绍一下。

2.1网络时间消耗增加

因为HTTP和HTTPS都需要DNS解析,而且大部分情况下都使用DNS缓存,为了突出对比效果,忽略了主域名的DNS解析时间。

当用户使用HTTP协议访问http://www.baidu.com(或www.baidu.com)时,需要花时间在以下网络上进行交互:

HTTPS对网站性能SEO有哪些影响

可以看到,用户只需完成TCP三次握手,建立TCP连接,就可以直接发送HTTP请求获取应用层数据,整个访问过程不需要消耗计算资源。

接下来看看HTTPS的访问流程,比HTTP复杂多了。在某些情况下,使用HTTPS可能会增加7 RTT。下图:

HTTPS第一次请求所需的网络时间解释如下:

1。三次握手建立TCP连接。它需要一个RTT。

2。用HTTP发起GET请求,服务器返回302跳转到https://www.baidu.com。需要一个RTT和一个302跳跃延迟。

a)在大多数情况下,用户不会手动进入https://www.baidu.com访问HTTPS,服务器只能返回302强制浏览器跳转到https。

b)浏览器处理302次跳转也需要时间。

3。三次握手重建TCP连接。它需要一个RTT。

a)302跳转到HTTPS服务器后,由于端口和服务器不同,需要重新完成三次握手,建立TCP连接。

4。TLS完成握手阶段1。至少需要一个RTT。

a)这个阶段主要是完成加密套件的协商和证书的认证。

b)服务器和浏览器会协商相同的密钥交换算法、对称加密算法、内容一致性检查算法、证书签名算法、椭圆曲线(ECC算法不要求)等。

c)浏览器获得证书后,需要验证证书的有效性,比如是否过期或者被撤销。

5。解析证书颁发机构站点的域名系统。它需要一个RTT。

a)浏览器获得证书后,可能需要启动OCSP或CRL请求来查询证书状态。

b)浏览器首先获取证书中的CA域名。

c)如果错过CAche,浏览器需要解析ca域名的DNS。

6。三次握手建立CA站点的TCP连接。它需要一个RTT。

a)DNS解析为IP后,需要完成三次握手才能建立TCP连接。

7。启动OCSP请求并获得响应。它需要一个RTT。

8。完整的握手阶段2需要一个RTT和计算时间。

a)完全握手的第二阶段主要是密钥协商。

9。完成握手后,应用层(即HTTP)数据在浏览器和服务器之间传输。

当然不是每个请求都需要添加7 RTT才能完成HTTPS第一个请求交互。大概不到0.01%的请求需要经过上述步骤,并且需要满足以下条件:

1。肯定是第一个要求。即TCP连接建立后发起的第一个请求,连接上的后续请求不需要再有上述行为。

2。必须发生完全握手,正常情况下,80%的请求可以实现简化握手。

3。浏览器需要打开OCSP或CRL功能。Chrome默认关闭ocsp,firefox和IE默认都打开。

4。浏览器错过了OCSP缓存。ocsp的一般更新周期是7天,火狐的查询周期也是7天,也就是说Ocsp查询7天只会出现一次。

5。浏览器错过了CA站点的DNS缓存。只有当它错过域名系统缓存时,证书颁发机构的域名系统才会被解析。

2.2计算时间增加

前一节只简单描述了在HTTPS关键路径上必须消耗的纯网络时间,不包括消耗CPU资源的计算时间。实际上

b)在RSA密钥交换过程中,premaster需要用证书的公钥加密。时间比较少,但是如果手机性能差的话,可能需要1ms。

c)交换ECC密钥时,需要计算椭圆曲线的公钥和私钥。

d)在ECC密钥交换过程中,需要对证书公钥进行解密,才能获得服务器发送的ECC公钥。

e) ECC在ECC密钥交换过程中,需要根据服务器的公钥来计算主密钥。

f)应用层数据的对称加密和解密。

g)应用层数据一致性检查。

2,服务器计算需要时间

a) RSA在交换密钥时需要使用证书的私钥对premaster进行解密。这个过程非常消耗性能。

b)交换ECC密钥时,需要计算椭圆曲线的公钥和私钥。

c)在ECC密钥交换过程中,需要用证书的私钥对ECC的公钥进行加密。

d)交换ECC密钥时,需要根据浏览器公钥计算共享主密钥。

e)应用层数据的对称加密和解密。

f)应用层数据一致性检查。

由于客户端的CPU和操作系统种类繁多,计算时间消耗不能一概而论。手机上的HTTPS计算会消耗性能,简单计算造成的延迟至少是50 ms,PC端也会增加至少10ms的计算延迟。