专栏首页前端迷「知识拾遗」你应该知道的 https

「知识拾遗」你应该知道的 https

基本概念

HTTP:超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL(SSL记录协议[SSL Record Protocol]),因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTPS和HTTP的区别

1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

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

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

4. http的连接很简单,是无状态的;

5. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTPS最大的特点

HTTPS最大的特点是安全, 在保护用户隐私,防止流量劫持方面发挥着非常关键的作用。主要有以下3点:

  1. 内容加密。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。
  2. 身份认证。保证用户访问的是百度服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持
  3. 数据完整性。防止内容被第三方冒充或者篡改。

HTTPS的缺点

1、证书费用以及更新维护。

2、HTTPS 降低一定用户访问速度(实际上优化好就不是缺点了)。

3、HTTPS 消耗 CPU 资源,需要增加大量机器。

HTTPS 网络访问过程

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

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

  1. 三次握手建立 TCP 连接。耗时一个 RTT。
  2. 使用 HTTP 发起 GET 请求,服务端返回 302 跳转到 https://www.baidu.com 。需要一个 RTT 以及 302 跳转延时。
  3. 三次握手重新建立 TCP 连接。耗时一个 RTT。
  4. TLS 完全握手阶段一。耗时至少一个 RTT。
  5. 解析 CA 站点的 DNS。耗时一个 RTT。
  6. 三次握手建立 CA 站点的 TCP 连接。耗时一个 RTT。
  7. 发起 OCSP 请求,获取响应。耗时一个 RTT。
  8. 完全握手阶段二,耗时一个 RTT 及计算时间。
  9. 完全握手结束后,浏览器和服务器之间进行应用层(也就是 HTTP)数据传输。

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

HTTPS的性能优化

主要优化两方面,访问速度和计算性能。

HTTPS 访问速度优化

  1. 设置HSTS,服务端返回一个 HSTS 的 http header,浏览器获取到 HSTS 头部之后,在一段时间内,不管用户输入www.baidu.com还是http://www.baidu.com,都会默认将请求内部跳转成https://www.baidu.com。Chrome, firefox, ie 都支持了 HSTS。
  2. Session resume,复用session可以减少 CPU 消耗,因为不需要进行非对称密钥交换的计算。可以提升访问速度,不需要进行完全握手阶段二,节省了一个 RTT 和计算耗时。复用有2种方式,Session cache和Session ticket。
  3. Nginx设置Ocsp stapling。Ocsp 全称在线证书状态检查协议 (rfc6960),用来向 CA 站点查询证书状态,比如是否撤销。通常情况下,浏览器使用 OCSP 协议发起查询请求,CA 返回证书状态内容,然后浏览器接受证书是否可信的状态。这个过程非常消耗时间,因为 CA 站点有可能在国外,网络不稳定,RTT 也比较大。如果不需要查询则可节约时间。
  4. 使用 SPDY 或者 HTTP2。SPDY 最大的特性就是多路复用,能将多个 HTTP 请求在同一个连接上一起发出去,不像目前的 HTTP 协议一样,只能串行地逐个发送请求。Pipeline 虽然支持多个请求一起发送,但是接收时依然得按照顺序接收,本质上无法解决并发的问题。HTTP2支持多路复用,有同样的效果。
  5. False start。简单概括 False start 的原理就是在 clientkeyexchange 发出时将应用层数据一起发出来,能够节省一个 RTT。

HTTPS 计算性能优化

  1. 优先使用 ECC椭圆加密算术。
  2. 使用最新版的 openssl。
  3. 硬件加速方案。
  4. TLS 远程代理计算

本文分享自微信公众号 - 前端迷(love_frontend)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么HTTPS比HTTP更安全?

    近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进...

    前端迷
  • 面试中常见的的 web 安全问题

    安全涉及的领域很大, 我也仅仅是了解一些皮毛, 每次面试前都要找资料复习, 很麻烦。

    前端迷
  • 如何优雅处理前端异常?(史上最全前端异常处理方案)

    前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。

    前端迷
  • 爬虫基础知识点

    学习爬虫之前需要了解的基础知识,如HTTP、爬虫、代理的基本原理等内容,对爬虫没有任何了解的小伙伴建议好好看看我分享的内容。

    stormwen
  • HTTP与HTTPS的区别

    HTTP:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1...

    一觉睡到小时候
  • 境外“暗黑客栈”组织对国内企业高管发起APT攻击

    当你启程前往伊萨卡,但愿你的道路漫长,充满奇迹,充满发现——卡瓦菲斯(希腊)。 以此纪念2015,即将逝去的中国威胁情报元年。 0x00摘要 Adobe于12月...

    FB客服
  • 区块链技术:无比锋利的互联网金融“手术刀”

    区块链技术无疑是当下中国市场最火爆的新技术,尽管它的母体——数字货币遭遇了政策层面的监管,但是有关区块链技术本身的优势让人们看到了它对于传统行业,特别是互联网行...

    用户1310347
  • 区块链:无比锋利的互联网金融“手术刀”

    孟永辉
  • 李彦宏:吹响百度“直达号”

    大数据文摘
  • 测试常用Linux命令

    无论哪种测试, 在项目测试阶段, 都需要去检查服务端各类微服务运行和日志情况. 服务端基本都以linux为主, 中小企业服务端基本已经云端化. 由此可见,与服务...

    louiezhou001

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动