Alan's blog Alan's blog
首页
思考感悟
技术学习
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Alan wu

前端小时
首页
思考感悟
技术学习
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机基础

  • 架构设计

  • HTTP网络

    • 关于前后端鉴权的几种方式
    • DNS与ARP的关系与原理解析
    • POST本质区别,面试官想听什么
    • TCP的可靠性传输是如何保证的
    • HTTP 2.0有什么新特性
    • 面试官:讲一下 https 和 http 的区别
      • 01 前言
        • 基本概念
      • 02 区别
        • 区别与优缺点
        • https的工作原理
      • 03 小结
    • 如何使用JWT做简单的登录验证操作
    • 密码学家的工具箱
    • 一文读懂TCP和UDP的区别
    • Web前端安全知多少
    • WebSocket 协议系统解析
  • Node

  • 小程序

  • 设计

  • JavaScript

  • HTML&CSS

  • 浏览器

  • webpack

  • 运维

  • Vue&React

  • 技术
  • HTTP网络
alanwu
2022-08-14
目录

面试官:讲一下 https 和 http 的区别

# 面试官:讲一下 https 和 http 的区别

"时无重至,华不再阳"

# 01 前言

因为http协议传输的数据都是以明文的形式传输的,内容没有经过加密操作,这就造成了传输不安全的情况。如果传输的数据中存在着银行卡,身份证等敏感信息,容易被他人盗取,实施诈骗。

所以人们就想出了一种能够安全传输的协议,https协议。该协议可以在信息传输前进行加密,加密之后接收方需要解密才可以得到信息,否则即使你截获了传输数据也无济于事。

# 基本概念

  • http: 是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议。
  • https:是以安全为目标的 HTTP 通道,即 HTTP 下 加入 SSL 层进行加密。其作用是:建立一个信息安全通道,来确保数据的传输,确保网站的真实性。

# 02 区别

那么https相比于http有哪些区别呢?是不是一种新的协议呢?其实https只是在http的基础上建立的,我们知道http协议在数据传输之前会进行TCP的三次握手,然后才会传输数据。其实https同样也会进行三次握手操作,只是在应用层和传输层之间添加了SSL/TLS层而已。

首先我们来看一下https是怎么连接的?

  1. 首先客户端发起请求到服务端,服务端处理后发送一个公钥给客户端
  2. 客户端进行验证公钥,看公钥是否有效和是否过期
  3. 客户端验证通过会产生随机值key,然后用公钥进行加密回传给服务端
  4. 服务端用私钥解密后获得客户端的随机值key
  5. 利用随机值key加密数据后传输给客户端
  6. 客户端利用key值进行解密数据
  7. 客户端获取真正的数据

通过上图我们就应该了解了https握手阶段,其实上面不仅是SSL握手,还包括建立连接的TCP三次握手。

既然https能够保证安全传输,是不是所有网站都使用https协议呢?

其实现在最关键的就是证书问题,用于证明你的网站是安全的而不是危险的。这就需要第三方信任度高的权威机构来对网站进行证书颁发,就好比给你授权一样。比如国内我们会相信支付宝,所以愿意把钱都存进余额宝一样的道理。

一般来说免费的证书是比较少的,很多都要收费,而且价格不菲。只有那些大型的公司或者安保系数比较高的电商网站等需要使用,一般个人的就不需要了。所以总结一下https的不足之处:

  • 证书问题,价格高
  • 握手阶段会额外消耗时间
  • SEO搜索响应慢
  • 加密范围比较有限
  • 若权威公司的证书泄露,一样是不安全的

# 区别与优缺点

  • http 是超文本传输协议,信息是明文传输,HTTPS 协议要比 http 协议安全,https 是具有安全性的 ssl 加密传输协议,可防止数据在传输过程中被窃取、改变,确保数据的完整性(当然这种安全性并非绝对的,对于更深入的 Web 安全问题,此处暂且不表)。
  • http 协议的默认端口为 80,https 的默认端口为 443。
  • http 的连接很简单,是无状态的。https 握手阶段比较费时,会使页面加载时间延长 50%,增加 10%~20%的耗电。
  • https 缓存不如 http 高效,会增加数据开销。
  • Https 协议需要 ca 证书,费用较高,功能越强大的证书费用越高。
  • SSL 证书需要绑定 IP,不能再同一个 IP 上绑定多个域名,IPV4 资源支持不了这种消耗。

# https的工作原理

客户端在使用 HTTPS 方式与 Web 服务器通信时有以下几个步骤:

  • 客户端使用 https url 访问服务器,则要求 web 服务器建立 ssl 链接。
  • web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),传输给客户端。
  • 客户端和 web 服务器端开始协商 SSL 链接的安全等级,也就是加密等级。
  • 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
  • web 服务器通过自己的私钥解密出会话密钥。
  • web 服务器通过会话密钥加密与客户端之间的通信。

# 03 小结

对于加密的流程,无非就是一个算法的问题,利用算法对随机值进行一个加密的操作,假如你的算法强度高,复杂性也比较高,那么没有解密方法的情况下是很难破解的。

算法这一块就不是我们考虑的范围了,我们只要好好理解这个过程就好了,前端工程师无需深究其中的细节部分。只要你面试的时候能够说出以上的流程,那么就没有问题了。

编辑 (opens new window)
上次更新: 2023/05/13, 23:08:05
HTTP 2.0有什么新特性
如何使用JWT做简单的登录验证操作

← HTTP 2.0有什么新特性 如何使用JWT做简单的登录验证操作→

最近更新
01
HTTPS:让数据传输更安全
06-15
02
沙盒:页面和系统之间的隔离墙
06-15
03
CSRF攻击:陌生链接不要随便点
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Alan Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式