当前位置:   article > 正文

一文了解Https

一文了解Https


一、什么是Https

认识https

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。

当我们在浏览器上输入一个Http的网址后,浏览器会提示我们与网站的连接是不安全的;
在这里插入图片描述
而输入一个Https的网址后,在网址的前面有一把锁的标志,点开后会告诉我们是安全的。
在这里插入图片描述
Http是超文本传输协议,Https是超文本传输安全协议,相比Http多了安全。Http大家都清楚由于没有加密接口返回的信息容易被获取而且平常自己进行接口测试的时候也知道,获取一个Token后直接用PostMan直接调用接口就行,具有相当大的安全隐患,而Https相对于Http来说在Http的基础上增加了加密,让项目的安全性得到了保证,这就是为什么上线项目要使用Https协议。
在这里插入图片描述
Https协议相较于Http协议具有数据完整性(传输过程进行完整校验)、数据隐私性(数据进行了加密)和身份认证(使用了认证证书)的特点。

TLS协议

看上面的架构图就知道,Https协议相对Http协议在应用层和传输层之间增加了安全层,在以前的版本中使用的是SSL协议,后来升级后修改成了TLS协议(传输层安全协议)。
TLS协议是由记录协议和握手协议组成:

  • 记录协议: 纪录协议负责对称密码对数据进行加密,对称加密的秘钥是由服务器客户端动态协商出来的。
  • 握手协议: 握手协议负责协商客户端和服务器之间的密码算法和共享秘钥。握手协议中还有密码规格改变协议(负责通知传达密码变更信号)和警告协议(负责协议发生错误的时候告诉对方)。

二、Https安全原理

加密算法

Https中使用的加密算法有对称加密和非对称加密:

  • 对称加密: 对称加密算法指的是加密和解密使用同一个秘钥的算法,也叫单钥加密算法,常用的对称加密算法有DES算法、3DES算法、AES算法、RC5算法、IDEA算法等。
  • 非对称加密: 非对称加密算法指的是加密和解密使用不同的秘钥的算法,客户端持有公钥而服务端持有私钥,私钥只存在服务器中是不会暴露的,公钥加密的只能私钥解密,同样私钥加密的只能公钥解密,常用的非对称加密算法有RSA算法、DS算法、ECDSA算法等。

简单的一看就会发现,非对称加密比对称加密来说更加安全,为什么还需要使用对称加密呢?其实对称加密和非对称加密各有优缺点,对称加密其算法简单,所以加密解密过程比较快,而非对称加密虽然安全但是加解密过程比较复杂效率慢。Https将对称加密和非对称加密结合在了一起,首先使用非对称加密来确定双方的身份,然后使用对称加密来传输消息,这就好比谍战片中,见面先对暗号,对完暗号传纸条,纸条还是加密了的。

SSL证书

这里需要注意的一点是公钥一开始我们肯定不知道的,那公钥是怎么来的呢?公钥同样是由服务器发送给我们的,那么就会出现一个问题,假设服务器是由黑客假冒的那岂不是所有的信息都被黑客截取了,所以Https协议引入了SSL证书。

数字签名

介绍SSL证书之前先介绍一下数字签名:数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
签名大家都熟悉,比如兑换的支票上需要签名来证明支票确实是由拥有者开出来的,在计算机上不可能出来个手动签名,它是通过数字签名来确定服务端的身份的。

数字签名的执行流程:

  1. 服务器发送的数据的会经过一个哈希函数计算报文的摘要信息。
  2. 服务器使用私钥对摘要信息进行加密。
  3. 加密完成后服务器将数字签名和报文一起发送给客户端。
  4. 客户端使用同样的哈希函数计算出报文的摘要信息。
  5. 客户端获取到报文后通过公钥对数字签名进行解密。
  6. 客户端将计算出来的摘要信息与解密后的摘要信息进行对比,确认消息是由服务器发送的。

因为加密信息是由报文产生的摘要信息,如果报文发生改变那么摘要信息必然会发生改变,解密后的结果无法匹配,那么数字就会验证失败,所以数字签名也保证了报文的完整性。

数字证书

数字证书是由电子商务认证中心(简称为CA中心)所颁发的一种较为权威与公正的证书,数字证书里包含了公钥以及拥有者的信息,相当于平常使用的身份证。

数字证书是用来干啥的呢,就好比我们去银行保险柜取东西,银行需要本人持有身份证证明你的身份才会给你,同样服务器发送的数据需要持有数字证书才能打开。正常情况下访问一个网站,客户端会先去获取该网站的证书,获取到证书后校验证书是否是安全合法的,校验安全后才会建立连接发送报文。
看一下CSDN的数字证书:
在这里插入图片描述
数字证书中包含证书的持有者信息、数字签名、加密算法和公钥信息等信息,正常用户获取到证书后会通过数字签名的验证过程来验证其有效性的,那么可能又有问题了,黑客不可以自己伪造个证书通过私钥加密生成数字签名同时将公钥等信息包装了发送出去吗?其实证书是可以自己颁发的,但是操作系统是不承认。证书中还包含以下图中信息,这些信息来证明证书的颁发机构,而在操作系统中有根证书列表信息,系统会通过一些列的手段证明了证书信息的颁发机构是权威机构后才会承认(就好比我们上了大学之后由学校颁发了的毕业证,当面试后公司会查询毕业证信息,而一些野鸡大学可能就不被公司所承认),当然如果把系统中的根证书列表卸了之后就会发现没有一个证书是被系统所承认的。
在这里插入图片描述

三、总结

根据上面的简单介绍我们可以将Https协议的安全认证分为下面几步:

  1. 首先由客户端向服务器发送请求。
  2. 服务器收到请求后向客户端发送SSL证书(SSL证书中使用了非对称加密)。
  3. 客户端经过一些列校验验证了证书的安全性。
  4. 确认证书没问题后客户端开始与服务器协商对称加密的秘钥。
  5. 协商完对称加密秘钥后客户端与服务器通过对称加密进行消息发送。
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/656416
推荐阅读
相关标签
  

闽ICP备14008679号