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

news/2024/5/20 4:45:15/文章来源:https://blog.csdn.net/weixin_33885253/article/details/90558834

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

1 前言

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

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

2 HTTPS 对访问速度的影响

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

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

下面分别介绍一下。

2.1 网络耗时增加

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

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

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

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

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

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

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

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

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

  1. 三次握手建立 TCP 连接。耗时一个 RTT。
  2. 使用 HTTP 发起 GET 请求,服务端返回 302 跳转到 https://www.baidu.com。需要一个 RTT 以及 302 跳转延时。
    1. 大部分情况下用户不会手动输入 https://www.baidu.com 来访问 HTTPS,服务端只能返回 302 强制浏览器跳转到 https。
    2. 浏览器处理 302 跳转也需要耗时。
  3.  三次握手重新建立 TCP 连接。耗时一个 RTT。
    1. 302 跳转到 HTTPS 服务器之后,由于端口和服务器不同,需要重新完成三次握手,建立 TCP 连接。
  4. TLS 完全握手阶段一。耗时至少一个 RTT。
    1. 这个阶段主要是完成加密套件的协商和证书的身份认证。
    2. 服务端和浏览器会协商出相同的密钥交换算法、对称加密算法、内容一致性校验算法、证书签名算法、椭圆曲线(非 ECC 算法不需要)等。
    3. 浏览器获取到证书后需要校验证书的有效性,比如是否过期,是否撤销。
  5. 解析 CA 站点的 DNS。耗时一个 RTT。
    1. 浏览器获取到证书后,有可能需要发起 OCSP 或者 CRL 请求,查询证书状态。
    2. 浏览器首先获取证书里的 CA 域名。
    3. 如果没有命中缓存,浏览器需要解析 CA 域名的 DNS。
  6. 三次握手建立 CA 站点的 TCP 连接。耗时一个 RTT。
    1. DNS 解析到 IP 后,需要完成三次握手建立 TCP 连接。
  7. 发起 OCSP 请求,获取响应。耗时一个 RTT。
  8. 完全握手阶段二,耗时一个 RTT 及计算时间。
    1. 完全握手阶段二主要是密钥协商。
  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。

2.2 计算耗时增加

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

  1. 浏览器计算耗时
    1. RSA 证书签名校验,浏览器需要解密签名,计算证书哈希值。如果有多个证书链,浏览器需要校验多个证书。
    2. RSA 密钥交换时,需要使用证书公钥加密 premaster。耗时比较小,但如果手机性能比较差,可能也需要 1ms 的时间。
    3. ECC 密钥交换时,需要计算椭圆曲线的公私钥。
    4. ECC 密钥交换时,需要使用证书公钥解密获取服务端发过来的 ECC 公钥。
    5. ECC 密钥交换时,需要根据服务端公钥计算 master key。
    6. 应用层数据对称加解密。
    7. 应用层数据一致性校验。
  2. 服务端计算耗时
    1. RSA 密钥交换时需要使用证书私钥解密 premaster。这个过程非常消耗性能。
    2. ECC 密钥交换时,需要计算椭圆曲线的公私钥。
    3. ECC 密钥交换时,需要使用证书私钥加密 ECC 的公钥。
    4. ECC 密钥交换时,需要根据浏览器公钥计算共享的 master key。
    5. 应用层数据对称加解密。
    6. 应用层数据一致性校验。

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

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

3 结束语

本系列的后续文章将进一步解释针对性的优化措施。

原文发布时间:2015-05-07

本文来自云栖合作伙伴“linux中国”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_715530.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过pfSense阻止对某个网站的访问

防火墙阻止对某个网站的访问是基本功能,在pfSense上阻止对某个网站的访问,通常可以通过别名和设置防火墙规则来完成。在本例中,我们来尝试阻止对新浪网(www.sina.com)的访问。查找域名解析地址添加别名设置防火墙规则检…

HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站 (陈婉凌) 中文pdf扫描版

《HTML5CSS3jQuery Mobile轻松构造APP与移动网站》以HTML与CSS为主,配合jQuery制作网页,并搭配jQueryMobile制作移动网页,通过具体的范例从基础到高级循序渐进地讲解。全书首先介绍了HTML5网页开发和CSS网页美化,只要按本书的顺序…

如何在最段的时间内让搜索引擎收录一个新网站?

对于搜索引擎收录新网站真的没有一个准确的时间,有时快有时慢,快的建站当天就收录,慢的几个月都不被收录。虽然收录有快有慢,但我们也可以通过操作来加快搜索引索的收录。下面总结了一些方法或是技巧供大家参考! 一、网…

Flickr 网站架构分析

1234567891011。。。。。。。。。。。。。。 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so 。。。。。。。。。。。。。。。。。。。。 <Proxy …

Linux快速构建LAMP网站平台

1.1 问题本例要求基于Linux主机快速构建LAMP动态网站平台&#xff0c;并确保可以支撑PHP应用及数据库&#xff0c;完成下列任务&#xff1a; 1&#xff09;安装LAMP平台各组件&#xff0c;启动LAMP平台 软件包&#xff1a;httpd、mariadb-server、mariadb、php、php-mysql系统服…

php主页备案号底部中间,如何获取公安备案号?如何将公安备案号放到网站底部?...

一、网站公安备案显示&#xff1a;网站通过了公安局备案后需要将“网站公安机关备案编号及图标”放到网站底部&#xff0c;本教程将详细指导如何操作。效果图&#xff1a;二、获取公安备案号及链接通过了公安备案后&#xff0c;获取备案编号及链接的方法&#xff1a;登录公安机…

配置Apache虚拟主机,实现在一台服务器上运行多个网站

Apache虚拟主机实现有三种方法&#xff1a;1、通过不同的IP地址2、通过不同的域名3、通过不同的端口号1、通过不同的IP地址&#xff0c;解析不同的域名&#xff08;1&#xff09;给服务器增加IP&#xff08;另一个域名解析&#xff09;[roothttp ~]# ifconfig eth0:1 192.168.2…

如何下载一些网站本身不希望你下载的文件呢

如一些学习视频之类&#xff0c;如何下载呢&#xff0c;本文主要针对一些非程序员朋友&#xff0c;对于程序员朋友其实稍微模式点的就是下面提到的右击&#xff0c;复制下载地址 其实很简单&#xff0c;打开对应的网站&#xff0c;按F12&#xff0c;浏览器下方就会弹出一个好玩…

不可忽视的力量,插件主题网站

在当前Web2.0时代&#xff0c;Blog&#xff0c;RSS&#xff0c;Wiki等服务充斥着整个互联网。近日&#xff0c;用户个性化定制搜索巨头Google宣布&#xff0c;将向Web 开发人员开放Gadget框架&#xff0c;使其能够在自己的网页上增添Universal Gadget。 这意味这用户可以根据自…

麻烦大家反馈一下昨天的网站访问速度

昨天是我们使用阿里云RDS之后&#xff0c;经历访问高峰期的第一天&#xff0c;麻烦大家反馈一下昨天访问园子的速度&#xff08;尤其是博客站点&#xff09;。 从我们观察的情况看&#xff0c;RDS表现不错。但在16:01与16:46两个时间点出现了RDS数据库连接数突增的情况&#xf…

如何让你的网站用discuz插件变的有力量

2019独角兽企业重金招聘Python工程师标准>>> 有段时间&#xff0c;我们的网站访问量经历了以下三个阶段&#xff1a; 上线第一个月&#xff1a;迅速增长 2-4个月&#xff1a;保持平稳 5-6个月&#xff1a;访问量降低&#xff0c;日活跃度降低 之后我们做了几个动作&…

Google Analytics(分析)-的Blog/网站流量分析器

如果你想要知道你Blog的访问者是如何找到你以及他们是如何与你的Blog/网站互动的&#xff0c;Google Analytics(分析)可以告诉你所有相关信息。由此&#xff0c;你可以将自己的营销资源集中于能够带来投资回报的广告系列和活动上&#xff0c;并且改进自己的Blog/网站以促进更多…

文字选中_防止网站文章被采集:禁止F12,禁止Ctrl+s,禁止ctrl+u,禁止选中文字,禁止鼠标右键...

作为一名SEOer&#xff0c;相信大家都应该听说过“文章采集”&#xff0c;自己原创手写的文章半小时内被别人原模原样采集走了&#xff0c;最可气的是自己发布的文章没有排名&#xff0c;甚至是还没有被百度搜索引擎收录&#xff0c;而那个采集我们文章的人却已经拥有了一个很不…

LAMP网站架构分析

转自&#xff1a;http://www.williamlong.info/archives/1908.html LAMP&#xff08;Linux-Apache-MySQL-PHP&#xff09;网站架构是目前国际流行的Web框架&#xff0c;该框架包括&#xff1a;Linux操作系统&#xff0c;Apache网 络服务器&#xff0c;MySQL数据库&#xff0c;P…

推荐awstats网站分析器,很强大

AWStats简单介绍 AWStats是在Sourcefroge上发展很快的一个基于perl的web日志分析工具。与其他工具相比&#xff0c;其优势在于 1. 界面友好&#xff0c;可以根据浏览器直接调用相应的语言界面&#xff08;支持中文&#xff09;&#xff1b; 2.基于perl&#xff0c;并且很好的…

如何在电脑上测试手机网站(补充)和phonegap

颜海镜 介绍了专业人士精准测试手机网站的经验 http://www.cnblogs.com/yanhaijing/p/3557261.html, 因为太专业了&#xff0c;稍显复杂和琐碎&#xff0c;这里我介绍下我一直关注的的 inter XDK 去年的 xdk 是浏览器插件&#xff0c;今年用nodejs重写了&#xff0c;可见前端会…

配置网站所需要的服务器环境,服务器什么环境配置放的网站多

服务器什么环境配置放的网站多 内容精选换一换Atlas 500 Pro 智能边缘服务器(型号 3000)安装上架、服务器基础参数配置、安装操作系统等操作请参见《Atlas 500 Pro 智能边缘服务器 用户指南(型号 3000)》&#xff0c;安装操作系统完成后&#xff0c;配置业务网口IP地址&#xf…

千万级PV规模高性能高并发网站架构

防伪码&#xff1a;好久不见&#xff0c;你会不会突然的出现。客户端&#xff1a;缓存&#xff08;expires&#xff09;、deflate压缩缓存服务器&#xff1a;CDN/cache缓存静态内容如&#xff1a;html、jpg、gif、js等静态web服务器&#xff1a;Apache/nginx静态服务器提供html…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

没有网站,靠什么来吸引近9亿的互联网用户

2019独角兽企业重金招聘Python工程师标准>>> 2018年水果连锁企业百果园&#xff0c;其线上销售额突破20亿元、日订单量达6万单,光小程序用户数累计达到了1300万。 数据显示&#xff0c;以互联网起家的瑞幸咖啡在2018年的互联网市场占有率在30%左右&#xff0c;而作为…