不可遗漏的知识点----你应该知道的https

不可遗漏的知识点----你应该知道的https

基本概念

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

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

HTTPS协议的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。性能优化

HTTPS和HTTP的区别

不可遗漏的知识点----你应该知道的https

1. https协议须要到ca申请证书,通常免费证书较少,于是须要必定费用。服务器

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

3. http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。session

4. http的链接很简单,是无状态的;并发

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

HTTPS最大的特色

HTTPS最大的特色是安全, 在保护用户隐私,防止流量劫持方面发挥着很是关键的做用。主要有如下3点:优化

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

HTTPS的缺点

一、证书费用以及更新维护。网站

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

三、HTTPS 消耗 CPU 资源,须要增长大量机器。

HTTPS 网络访问过程

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

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


不可遗漏的知识点----你应该知道的https


  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 的原理就是在 client
    key
    exchange 发出时将应用层数据一块儿发出来,可以节省一个 RTT。

HTTPS 计算性能优化

  1. 优先使用 ECC椭圆加密算术。
  2. 使用最新版的 openssl。
  3. 硬件加速方案。
  4. TLS 远程代理计算
相关文章
相关标签/搜索