https简介

71 阅读4分钟
前言

在https问世之前,我们的数据都是明文传输的,如果在内网中传输基本没有任何问题,随着电商、互联网的发展,普通的明文传输已经不能满足类似支付这种加密的传输了,要用到加密传输。

对称加密

所谓对称加密就是加密和解密都用同一个秘钥。

对称加密解密比较快,但是有个问题,秘钥容易泄露,如果黑客在中间拿到秘钥,就跟明文传输没什么区别了。

非对称加密

非对称加密是使用公钥加密的信息只能用对应的秘钥解密,秘钥加密的信息只能对应公钥才能解密

需要在客户端和服务端分别生成一对秘钥和公钥才能传输,客户用服务端的公钥加密信息到服务端,服务端用客户端的公钥加密信息到客户端。

但是非对称加密但是加密解密比较慢,性能没有对称加密好。

对称加密+非对称加密

首先使用公钥把对称加密的秘钥传递给服务端,后面使用对称加密的秘钥进行传递信息。

但是这样有一个问题,就是黑客作为中间人可以伪装服务器和客户端,骗取秘钥。

  1. 客户端请求服务器事被黑客拦截了,实际拿到是黑客的公钥
  2. 客户端用黑客的公钥加密了对称加密秘钥把秘钥发生给了黑客
  3. 黑客此时就拿到了客户端的秘钥
  4. 黑客在用假装成客户端请求真实的服务器,获取到了真实的服务器公钥
  5. 可以用真实服务的公钥把黑客秘钥传给服务器
  6. 此时如果客户端和服务器加密传输数据的话,黑客在中间就能通过秘钥解密,并且修改数据等

对称加密+非对称加密也不安全,因为客户端不知道公钥到底是不是真实服务器的公钥,如果确定这个公钥就是服务器而不是中间人的呢,这个是时候就需要CA证书了。

CA

CA就是一个权威机构,他颁布的证书可以高度可靠,信任。

  1. 首先,服务端把自己的公钥、域名等信息拿去给CA机构
  2. CA机构会用自己的秘钥把这些信息加密并生产一个证书给服务器
  3. 客户端请求服务器,服务器把证书给客户端
  4. 客户端用CA机构公钥解密,拿到服务器的公钥和信息,来确定是不是服务器的公钥

CA颁发的证书就像公安局给颁发的证明一样,可以完全相信

TLS

tls是在应用层和传输层中间加的一层,用来加密和解密信息

tls目前有1.2和1.3版本,主流行的是1.2版本,tls需要四次握手

  1. 第一次握手客户端向服务器发送tls版本、随机数ClientRandom1、加密套件
  2. 服务器端向客户端发送确定的tls版本、服务器随机数ServeRandom2、确认的加密套件、证书
  3. 客户端用公钥加密传输随机数ClientRandom3,并且基于ClientRandom1、ServeRandom2、ClientRandom3,使用加密套件生成会话秘钥,在用会话秘钥把迄今为止的通讯信息生成摘要加密传递给服务器进行校验
  4. 服务端收到公钥加密后的ClientRandom3,使用秘钥解密出来,在同样基于ClientRandom1、ServeRandom2、ClientRandom3,使用加密套件生成会话秘钥,解密收到的加密摘要信息进行校验,在同样把迄今为止的通讯信息生成摘要加密传递给服务器进行校验

ClientRandom3这个随机数很重要,前面两个随机数都是明文传输的,只有这个随机数加密传输的,基于三个数来生成会话秘钥。

总结
  1. https使用的是对称加密+非对称加密+CA
  2. tls需要四次握手,TCP需要三次握手建立连接,四次握手断开
参考

二十八张图彻底讲明白 HTTPS 的加密流程juejin.cn/post/728974…