1 前言

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

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

2 HTTP与HTTPS的概念和区别

(1)HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

(2)超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

(3)https协议需要到ca申请证书,一般免费证书很少,需要交费。

http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 ,要比http协议安全

3 HTTPS 对访问速度的影响

在介绍速度优化策略之前,先来看下 HTTPS 对速度有什么影响。影响主要来自两方面:

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

下面分别介绍一下。

3.1 网络耗时增加

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

用户使用 HTTP 协议访问http://www.baidu.com(或者 www.baidu.com) 时会有如下网络上的交互耗时:

图 1 HTTP 首个请求的网络耗时

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

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

图 2 HTTPS 首次请求对访问速度的影响

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 完全握手阶段一。耗时至少一个 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。

3.2 计算耗时增加

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

1,    浏览器计算耗时

a)       RSA 证书签名校验,浏览器需要解密签名,计算证书哈希值。如果有多个证书链,浏览器需要校验多个证书。

b)      RSA 密钥交换时,需要使用证书公钥加密 premaster。耗时比较小,但如果手机性能比较差,可能也需要 1ms 的时间。

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

d)      ECC 密钥交换时,需要使用证书公钥解密获取服务端发过来的 ECC 公钥。

e)       ECC 密钥交换时,需要根据服务端公钥计算 master key。

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

g)      应用层数据一致性校验。

2,    服务端计算耗时

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

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

c)       ECC 密钥交换时,需要使用证书私钥加密 ECC 的公钥。

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

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

f)       应用层数据一致性校验。

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

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

HTTP与HTTPS对访问速度(性能)的影响相关推荐

  1. 苹果CMS cpu跑满占用高开启Redis高速缓存加快访问速度性能调优【转】

    由于采集的影片数据过多,如果不设置缓存,可能会造成网站访问缓慢,或者CPU消耗过高.随着用户访问量的上升,添加缓存设置是有这个必要的,众所周知,redis作为一款非常优秀的缓存工具,非常适合苹果cms ...

  2. 大型网站HTTPS实践:HTTPS对性能的影响

    作者 | 百度HTTPS技术支持团队 百度已经上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.百度 HTTPS性能优化涉及到大量内容,从前端页面.后端架构.协议特性.加 ...

  3. 大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt388 HTTPS 在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与 ...

  4. 如何让提高网站访问速度

    如何让提高网站访问速度 整理方案一: 网站访问速度可以直接影响到网站的流量,而网站的访问量几乎与网站的利益直接挂钩,因此网站的速度问题成为企业及站长十分关注的问题.现在网站越来越多,不少朋友的网站打开 ...

  5. 怎样提高网站的访问速度的诀窍

    网站的稳定是运营的首要条件,这也是网站运行不可或缺的,如果客户发现网站打不开,这时就会影响网站的 效果,从而也会让客户产生一定想法,不利于企业形象.因此网站快速稳定运行,可以给客户一个好印象,这也是开 ...

  6. 进阶篇:如何优化网站提升访问速度

    网站的稳定是运营的首要条件,这也是网站运行不可或缺的,如果客户发现网站打不开,这时就会影响网站的 效果,从而也会让客户产生一定想法,不利于企业形象.因此网站快速稳定运行,可以给客户一个好印象,这也是开 ...

  7. 网页访问速度的关键问题和解决方法

    网站访问速度可以直接影响到网站的流量,而网站的访问量几乎与网站的利益直接挂钩,因此网站的速度问题成为企业及站长十分关注的问题.现在网站越来越多,不少朋友的网站打开速度很不理想.也许自己打开网站速度很快 ...

  8. 提高WordPress访问速度与性能的技巧总结

    性能是任何成功网站的一个关键因素.越来越多的人选择使用WordPress搭建个人博客.CMS内容展示或是企业网站,但可能由于高流量或一些未知的原因,导致你的WordPress性能越来越低,尤其对于大多 ...

  9. 网站开启https后很慢_安装SSL证书会导致网站访问速度变慢?

    前不久,在网上看到一些这样的信息,是说在网站使用过SSL证书后,会导致网站打开速度变慢?还有这样一个问题,是说SSL证书会导致网上速度变慢,那么使用CND加速,就可以拟补这个访问速度.真的是这样吗?小 ...

最新文章

  1. 关于CentOS-6的默认带的mysql启动和安装问题
  2. c 设计计算机报告,C课程设计(计算器)报告
  3. 大数据量下高并发同步的讲解(不看,保证你后悔!)
  4. Access中按照不含日期的时间范围进行查询
  5. C语言程序设计题解pdf,C语言程序设计题解与上机指导.pdf
  6. gpt和mbr的区别
  7. OPC Expert 最新版Crack
  8. 颜色代码:网页颜色代码大全及色彩搭配教程
  9. 1.搭建普罗米休斯监控,实现可视化展示
  10. 3Dlanenet+
  11. Canvas百战成神-圆(1)
  12. linux内存双通道,两根内存就是双通道?太年轻
  13. 【实现选定单选框出现对应的选择框或输入框】
  14. 大规模并行处理器编程实战笔记3
  15. 77:88火箭输了(阿尔德里奇=罗伊)
  16. sql模糊匹配按匹配度匹配的五种方法
  17. 【绘画教程】简单几步教你绘画肩膀和脖子!
  18. 【电力电子】【2014】三相电压型逆变器在独立和并网模式下的动态建模与分析
  19. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
  20. ijkplayer使用 android,【Android】ijkplayer集成使用

热门文章

  1. ios php range,PHP range() 函数 - PHP 基础教程
  2. 浏览器内核_测量时间:从Java到内核再到
  3. android avc格式,Android权限 - avc权限问题
  4. Java中的executeQuery,java连接数据库executeUpdate() 和executeQuery()
  5. mysql主从字符集不一致_MySQL多字节字符集造成主从数据不一致问题
  6. 非法关机 mysql_一次非法关机造成mysql数据表损坏的例子
  7. 这样的阅读工具,人手一个不过分吧?
  8. 一前端去相亲网站找对象,朋友问:找到了吗?这回复太专业...
  9. 这本空降京东当当新书榜TOP1的“算法小抄”是什么来头?
  10. 快速提升页面性能的必备利器