大型网站https实践(下)

发布时间:2022-05-13 18:10:12 作者: 来源: 浏览量(2173 )
摘要:用户只需要完成 TCP 三次握手建立 TCP 连接就能够直接发送 HTTP 请求获取应用层数据,此外在整个访问过程中也没有需要消耗计算资源的地方。 接下来看 HTTPS 的访问过程,相比 HTTP 要复杂很多,在部分场景下,使用 ...

 用户只需要完成 TCP 三次握手建立 TCP 连接就能够直接发送 HTTP 请求获取应用层数据,此外在整个访问过程中也没有需要消耗计算资源的地方。

 

接下来看 HTTPS 的访问过程,相比 HTTP 要复杂很多,在部分场景下,使用 HTTPS 访问有可能增加 7 个 RTT。

 

HTTPS 首次请求需要的网络耗时解释如下:

 

1, 三次握手建立 TCP 连接。耗时一个 RTT。

 

2, 使用 HTTP 发起 GET 请求,服务端返回 302 跳转到 www.baidu.com。需要一个 RTT 以及 302 跳转延时。

 

a) 大部分情况下用户不会手动输入 www.baidu.com 来访问 HTTPS,服务端只能返回 302 强制浏览器跳转到 https。

 

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

 

3, 三次握手重新建立 TCP 连接。耗时一个 RTT。

 

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

 

4, TLS 完全握手阶段一。耗时至少一个 RTT。

 

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

 

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

 

c) 浏览器获取到证书后需要校验证书的有效性,比如是否过期,是否撤销。

 

5, 解析 CA 站点的 DNS。耗时一个 RTT。

 

a) 浏览器获取到证书后,有可能需要发起 OCSP 或者 CRL 请求,查询证书状态。

 

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

 

c) 如果没有命中缓存,浏览器需要解析 CA 域名的 DNS。

 

6, 三次握手建立 CA 站点的 TCP 连接。耗时一个 RTT。

 

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

 

7, 发起 OCSP 请求,获取响应。耗时一个 RTT。

 

8, 完全握手阶段二,耗时一个 RTT 及计算时间。

 

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

 

9, 完全握手结束后,浏览器和服务器之间进行应用层(也就是 HTTP)数据传输。

 

当然不是每个请求都需要增加 7 个 RTT 才能完成 HTTPS 首次请求交互。大概只有不到 0.01% 的请求才有可能需要经历上述步骤,它们需要满足如下条件:

 

1, 必须是首次请求。即建立 TCP 连接后发起的第一个请求,该连接上的后续请求都不需要再发生上述行为。

 

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

 

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

 

4, 浏览器没有命中 OCSP 缓存。Ocsp 一般的更新周期是 7 天,firefox 的查询周期也是 7 天,也就说是 7 天中才会发生一次 ocsp 的查询。

 

5, 浏览器没有命中 CA 站点的 DNS 缓存。只有没命中 DNS 缓存的情况下才会解析 CA 的 DNS。

 

以上就是小编对大型网站https实践的解析。

 

扫一扫二维码,直接手机访问此页

扫码访问手机页面

【免责声明】本网站的部分文章信息(文字、图片、音频视频文件等资源)来自于网络,均是为公众传播有益咨询信息之目的,其版权归版权所有人所有。 本站采用的非本站原创文章及图片等内容无法一一与版权者联系,如果本站所选内容的文章作者及编辑认为其作品不宜供大家浏览,或不应无偿使用, 请及时联系我们删除,同时向您深表歉意!请发送邮件153462496@qq.com进行联系。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

在线客服
嘿,我来帮您!