您现在的位置是:首页 > 市场营销❤ > 网络推广网络推广

胜于蓝|大型网站的 HTTPS 实践:HTTPS 对性能的影响

胜于蓝2019-07-02【网络推广】人已围观

简介百度在2015年即完成HTTPS改造,那大型网站的HTTPS改造中都有哪些实践经验,学院君特分析这篇干货满满系列内容,转自百度运维博客。

百度在2015年即完成HTTPS改造,那大型网站的HTTPS改造中都有哪些实践经验,学院君特分析这篇干货满满系列内容,转自百度运维博客。kQP胜于蓝|优秀个人博客

1 前言kQP胜于蓝|优秀个人博客

HTTPS 在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS 也会降低用户访问速度,增加网站服务器的计算资源消耗。kQP胜于蓝|优秀个人博客

本文主要介绍 HTTPS对用户体验的影响。kQP胜于蓝|优秀个人博客

2 HTTPS 对访问速度的影响kQP胜于蓝|优秀个人博客

在介绍速度优化策略之前,先来看下 HTTPS 对速度有什么影响。影响主要来自两方面:kQP胜于蓝|优秀个人博客

  1. 协议交互所增加的网络 RTT(round trip time)。
  2. 加解密相关的计算耗时。

下面分别介绍一下。kQP胜于蓝|优秀个人博客

2.1 网络耗时增加kQP胜于蓝|优秀个人博客

由于 HTTP 和 HTTPS 都需要 DNS 解析,并且大部分情况下使用了 DNS 缓存,为了突出对比效果,忽略主域名的 DNS 解析时间。kQP胜于蓝|优秀个人博客

用户使用 HTTP 协议访问http://www.baidu.com(或者 www.baidu.com) 时会有如下网络上的交互耗时:kQP胜于蓝|优秀个人博客

图 1 HTTP 首个请求的网络耗时kQP胜于蓝|优秀个人博客

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

接下来看 HTTPS 的访问过程,相比 HTTP 要复杂很多,在部分场景下,使用 HTTPS 访问有可能增加 7 个 RTT。如下图:kQP胜于蓝|优秀个人博客

图 2 HTTPS 首次请求对访问速度的影响kQP胜于蓝|优秀个人博客

HTTPS 首次请求需要的网络耗时解释如下:kQP胜于蓝|优秀个人博客

1,    三次握手建立 TCP 连接。耗时一个 RTT。kQP胜于蓝|优秀个人博客

2,    使用 HTTP 发起 GET 请求,服务端返回 302 跳转到 https://www.baidu.com。需要一个 RTT 以及 302 跳转延时。kQP胜于蓝|优秀个人博客

a)       大部分情况下用户不会手动输入 https://www.baidu.com 来访问 HTTPS,服务端只能返回 302 强制浏览器跳转到 https。kQP胜于蓝|优秀个人博客

b)      浏览器处理 302 跳转也需要耗时。kQP胜于蓝|优秀个人博客

3,    三次握手重新建立 TCP 连接。耗时一个 RTT。kQP胜于蓝|优秀个人博客

a)       302 跳转到 HTTPS 服务器之后,由于端口和服务器不同,需要重新完成三次握手,建立 TCP 连接。kQP胜于蓝|优秀个人博客

4,    TLS 完全握手阶段一。耗时至少一个 RTT。kQP胜于蓝|优秀个人博客

a)       这个阶段主要是完成加密套件的协商和证书的身份认证。kQP胜于蓝|优秀个人博客

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

c)       浏览器获取到证书后需要校验证书的有效性,比如是否过期,是否撤销。kQP胜于蓝|优秀个人博客

5,    解析 CA 站点的 DNS。耗时一个 RTT。kQP胜于蓝|优秀个人博客

a)       浏览器获取到证书后,有可能需要发起 OCSP 或者 CRL 请求,查询证书状态。kQP胜于蓝|优秀个人博客

b)      浏览器首先获取证书里的 CA 域名。kQP胜于蓝|优秀个人博客

c)       如果没有命中缓存,浏览器需要解析 CA 域名的 DNS。kQP胜于蓝|优秀个人博客

6,    三次握手建立 CA 站点的 TCP 连接。耗时一个 RTT。kQP胜于蓝|优秀个人博客

a)       DNS 解析到 IP 后,需要完成三次握手建立 TCP 连接。kQP胜于蓝|优秀个人博客

7,    发起 OCSP 请求,获取响应。耗时一个 RTT。kQP胜于蓝|优秀个人博客

8,    完全握手阶段二,耗时一个 RTT 及计算时间。kQP胜于蓝|优秀个人博客

a)       完全握手阶段二主要是密钥协商。kQP胜于蓝|优秀个人博客

9,    完全握手结束后,浏览器和服务器之间进行应用层(也就是 HTTP)数据传输。kQP胜于蓝|优秀个人博客

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

1,    必须是首次请求。即建立 TCP 连接后发起的第一个请求,该连接上的后续请求都不需要再发生上述行为。kQP胜于蓝|优秀个人博客

2,    必须要发生完全握手,而正常情况下 80% 的请求能实现简化握手。kQP胜于蓝|优秀个人博客

3,    浏览器需要开启 OCSP 或者 CRL 功能。Chrome 默认关闭了 ocsp 功能,firefox 和 IE 都默认开启。kQP胜于蓝|优秀个人博客

4,    浏览器没有命中 OCSP 缓存。Ocsp 一般的更新周期是 7 天,firefox 的查询周期也是 7 天,也就说是 7 天中才会发生一次 ocsp 的查询。kQP胜于蓝|优秀个人博客

5,    浏览器没有命中 CA 站点的 DNS 缓存。只有没命中 DNS 缓存的情况下才会解析 CA 的 DNS。kQP胜于蓝|优秀个人博客

2.2 计算耗时增加kQP胜于蓝|优秀个人博客

上节还只是简单描述了 HTTPS 关键路径上必须消耗的纯网络耗时,没有包括非常消耗 CPU 资源的计算耗时,事实上计算耗时也不小(30ms 以上),从浏览器和服务器的角度分别介绍一下:kQP胜于蓝|优秀个人博客

1,    浏览器计算耗时kQP胜于蓝|优秀个人博客

a)       RSA 证书签名校验,浏览器需要解密签名,计算证书哈希值。如果有多个证书链,浏览器需要校验多个证书。kQP胜于蓝|优秀个人博客

b)      RSA 密钥交换时,需要使用证书公钥加密 premaster。耗时比较小,但如果手机性能比较差,可能也需要 1ms 的时间。kQP胜于蓝|优秀个人博客

c)       ECC 密钥交换时,需要计算椭圆曲线的公私钥。kQP胜于蓝|优秀个人博客

d)      ECC 密钥交换时,需要使用证书公钥解密获取服务端发过来的 ECC 公钥。kQP胜于蓝|优秀个人博客

e)       ECC 密钥交换时,需要根据服务端公钥计算 master key。kQP胜于蓝|优秀个人博客

f)       应用层数据对称加解密。kQP胜于蓝|优秀个人博客

g)      应用层数据一致性校验。kQP胜于蓝|优秀个人博客

2,    服务端计算耗时kQP胜于蓝|优秀个人博客

a)       RSA 密钥交换时需要使用证书私钥解密 premaster。这个过程非常消耗性能。kQP胜于蓝|优秀个人博客

b)      ECC 密钥交换时,需要计算椭圆曲线的公私钥。kQP胜于蓝|优秀个人博客

c)       ECC 密钥交换时,需要使用证书私钥加密 ECC 的公钥。kQP胜于蓝|优秀个人博客

d)      ECC 密钥交换时,需要根据浏览器公钥计算共享的 master key。kQP胜于蓝|优秀个人博客

e)       应用层数据对称加解密。kQP胜于蓝|优秀个人博客

f)       应用层数据一致性校验。kQP胜于蓝|优秀个人博客

由于客户端的 CPU 和操作系统种类比较多,所以计算耗时不能一概而论。手机端的 HTTPS 计算会比较消耗性能,单纯计算增加的延迟至少在 50ms 以上。PC 端也会增加至少 10ms 以上的计算延迟。kQP胜于蓝|优秀个人博客

服务器的性能一般比较强,但由于 RSA 证书私钥长度远大于客户端,所以服务端的计算延迟也会在 5ms 以上。kQP胜于蓝|优秀个人博客

3 结束语kQP胜于蓝|优秀个人博客

本系列的后续文章将进一步解释针对性的优化措施。kQP胜于蓝|优秀个人博客

Tags:

HTTPS   性能的影响   HTTPS站点

很赞哦! ()

文章评论

当前时间

合作加盟

  • 扫码成为快钱代理
  • 扫码加站长微信,为您推荐快钱总部负责人
  • 快钱POSS机(电签版)
  • 1,免押版:签约费率快捷交易0.38%,常规交易0.6%
  • 贷记卡单笔≥3000元视为激活
  • 2,,有押版:签约快捷交易0.38%,常规交易0.6%
  • 激活首刷≥99元,扣除99元系统服务费,多出部分实时到账
  • 电签版ipos参与每月扶持奖励
  • 电签版ipos与Mpos单独考核台均
  • 30台以上有效激活奖励3000元扶持金
  • 当月交易额≥3000元的为活跃用户

快钱代理公告

  • 凡事扫码代理必须实名认证
  • 实名认证后才可拉进代理微信群
  • 代理微信群有相关活动政策等

站点信息

  • 建站时间:2018-10-24
  • 网站程序:帝国CMS7.5
  • 主题模板《今夕何夕》
  • 文章统计2366篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们

X客服在线

关于

服务时间

周一至周日 9:00-22:00