一文彻底搞懂https传输过程

sprina

一. http与https区别

HTTP:是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。(可以理解为

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

HTTPS和HTTP的区别主要如下:

  • HTTP 明文传输,数据未加密,安全性较差。https数据传输过程加密
  • 使用 HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所共12 个包。
  • http 和 https 使用完全不同的连接方式,http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。端口也不一样,前者是 80,后者是 443。
  • HTTPS 建构在 SSL/TLS 之上的 HTTP 协议,更耗费服务器资源。

二. https传输的具体过程

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

TLS 的完整过程需要三个算法(协议),密钥交互算法,对称加密算法,和消息认证算法

HTTPS 的整体过程分为证书验证和数据传输阶段

  1. 证书验证阶段:
  • 浏览器发起 HTTPS 请求。( TLS 握手请求)
  • 服务端返回 证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息。
  • 客户端验证证书是否合法,如果不合法则提示告警。
  1. 数据传输阶段:
  • 当证书验证合法后,在本地生成随机数。
  • 通过公钥加密随机数,并把加密后的随机数传输到服务端。
  • 服务端通过私钥对随机数进行解密。
  • 服务端通过客户端传入的随机数构造对称加密算法,之后的数据交互通过对称加密算法进行加解密。(对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法)

服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,在此过程中,中间方无法对其解密(即使是客户端也无法解密,因为只有服务器端拥有唯一的私钥),保证了对称秘钥在收发过程中的安全,此时,服务器端和客户端拥有了一套完全相同的对称秘钥。

最后,总结一下https传输过程:
1.客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于构造对称加密算法的随机数。
2.通过证书中的公钥对随机数进行加密传输到服务端(随机对称密钥),服务端接收后通过私钥解密得到随机对称密钥,之后的数据交互通过对称加密算法进行加解密。(既有对称加密,也有非对称加密)

常见问题

为什么数据传输是用对称加密?

答:HTTP的应用场景中通常端与端之间存在大量的交互,非对称加密的加解密效率非常低。
另外,在 HTTPS的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密

为什么需要证书?
答:防止“中间人”攻击,同时可以为网站提供身份证明。

使用 HTTPS 会被抓包吗?
答:会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。

阅读 1.1k

力求用最简单的思想去理解清楚复杂概念

315 声望
16 粉丝
0 条评论

力求用最简单的思想去理解清楚复杂概念

315 声望
16 粉丝
宣传栏