一文完全搞懂https传输过程

一. 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.经过证书中的公钥对随机数进行加密传输到服务端(随机对称密钥),服务端接收后经过私钥解密获得随机对称密钥,以后的数据交互经过对称加密算法进行加解密。(既有对称加密,也有非对称加密)ssl

常见问题

为何数据传输是用对称加密?资源

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

为何须要证书?
答:防止“中间人”攻击,同时能够为网站提供身份证实。

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

相关文章
相关标签/搜索