14.计算机网络---应用层之HTTPS

HTTP的内容是通过明文传输的不够安全,在此基础之上,衍生出了HTTPS。相较于HTTP,HTTPS多了一层SSL/TSL,会更加安全,并且是密文传输的。

HTTPS

概念

HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。
在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的

SSL(Secure Sockets Layer 安全套接字协议),以及它的继任者传输层安全(Transport Layer Security TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
TLS是SSL的创新安全协议,建立在SSL的基础之上

SSL/TLS可以理解为在传输层和应用层之间新增了一层,如下图所示:
在这里插入图片描述
HTTPS主要作用是:

(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;

(2)对网站服务器进行真实身份认证。

我们经常会在Web的登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是改用https://。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。
在这里插入图片描述

在学习SSL/TLS加密过程之前,需要先了解对称加密和非对称加密,简单来说就是:
对称加密:加密方和解密方使用同一个密钥
非对称加密:使用公钥加密,使用密钥解密
关于对称加密和非对称加密更加详细的内容,可以查看我之前的博客:ssh远程登录服务—安全机制

中间人攻击

如果HTTPS简单的使用对称加密或者非对称加密,都很有可能会造成中间人攻击(也就是数据在请求和响应的过程中,被一个中间人调包,这也是钓鱼网站的常用方法)

对称加密的中间人攻击

因为对称加密的过程中,客户端和服务器端使用同一个密钥,所以在用户访问服务器的过程中,需要首先让客户端请求服务器端的密钥,然后服务器将密钥返回给客户端,这之后才能传输数据。
但是对称加密就很有可能造成如下图这种情况,客户端以为自己访问的事服务端,服务端也以为自己接收到的是客户端的访问,其实都不是,中间人可以轻而易举的获取到客户端和服务端之间的密钥,非常的不安全。
在这里插入图片描述
对称加密具有加解密速度快,性能高的特点,也是 HTTPS 最终采用的加密形式

非对称加密的中间人攻击

非对称加密也就是响应请求的那一方会产生一对公私钥,然后将公钥发送给对方,以便于对数据进行加密,自己则保留私钥,用于将对方加密过后的数据进行解密。这种方式会比对称加密更加安全一些,但是如何将公钥传输给对方呢?如果直接传公钥,可能也会被中间人调包,如下图所示
在这里插入图片描述
由此可见,单独的使用对称加密或者非对称加密都是不够安全的,所以HTTPS采用的是对称加密和非对称加密结合的方式。但是还是需要解决公钥传输的问题,所以HTTPS引入了数字证书、数字签名的概念来解决这个问题。
在这里插入图片描述

数字证书

如何解决公钥传输问题呢?从现实生活中的场景找答案。员工入职时,企业一般会要求提供学历证明,显然不是什么阿猫阿狗的本本都可称为学历,这个学历必须由第三方权威机构(Certificate Authority,简称 CA)即教育部颁发。同理,server 也可以向 CA 申请证书,在证书中附上公钥,然后将证书传给 client,证书由站点管理者向 CA 申请,申请的时候会提交 DNS 主机名等信息,CA 会根据这些信息生成证书。

CA:权威认证机构,颁发数字证书的机构,而且CA给颁发的证书签名;CA用自己的私钥对需要进行认证的服务端的公钥进行加密,后期验证公钥的时候,再用CA的公钥对需要验证的公钥进行解密
什么是证书?
  证书就是公钥和私钥,证书是需要和域名绑定的
证书包含哪些内容?
  证书的发布机构
  证书的有效期
  公钥
  证书所有者(Subject)
  签名所使用的算法
  指纹以及指纹算法
为什么需要证书?
  为了安全,确定要访问的服务器是真正的我要访问的,不是钓鱼网站;企业用户才会需要购买证书,提升网站的可信度
证书品牌:
在这里插入图片描述
数字证书:证明这个公钥是你的
数字签名:用来身份识别的,给CA颁发的数字证书签名,证明这个证书是某某公司的,具有可信性。是浏览器来认可CA颁发的证书,证书上有签名。浏览器和CA公司早就达成了合作关系(CA公司会给浏览器产商money)
数据加密:是数字签名认证通过后,确认证书是有效的,然后再发送数据,发送数据的过程中使用公钥和私钥的加密和解密
数字证书认证机构的工作过程:
在这里插入图片描述
证书颁发和使用过程:
在这里插入图片描述

HTTPS的工作原理(也称HTTPS的四次握手)

讲述HTTPS工作原理之前,我们先看几幅流程图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体过程:

  1. 首先,客户端向服务器端发送请求报文,请求与服务端建立连接。
  2. 服务端产生一对公私要,然后将自己的公钥发送给CA机构,CA机构也有一对公私钥,然后CA机构使用自己的私钥将服务端发送过来的公钥进行加密,产生一个CA数字证书。
  3. 服务端响应客户端的请求,将CA机构生成的数字证书发送给客户端。
  4. 客户端将服务端发送过来的数字证书进行解析(因为浏览器产商跟CA机构有合作,所以浏览器中已经保存了大部分CA机构的密钥,用于对服务端发送过来的数字证书进行解密),验证这个数字证书是否合法,如果不合法,会发送一个警告。如果合法,取出服务端生成的公钥。
  5. 客户端取出公钥并生成一个随机码key(其实就是对称加密中的密钥)
  6. 客户端将加密后的随机码key发送给服务端,作为接下来的对称加密的密钥
  7. 服务端接收到随机码key后,使用自己的私钥对它进行解密,然后获得到随机码key。
  8. 服务端使用随机码key对传输的数据进行加密,在传输加密后的内容给客户端
  9. 客户端使用自己生成的随机码key解密服务端发送过来的数据,之后,客户端和服务端通过对称加密传输数据,随机码Key作为传输的密钥。

推荐几篇关于HTTPS的非常好的博客:
18 张图彻底弄懂 HTTPS 的原理
深入理解HTTPS工作原理
HTTPS原理详解
HTTPS流程和原理
HTTPS理论基础及其在Android中的最佳实践

猜你喜欢

转载自blog.csdn.net/weixin_43880061/article/details/126220852