赞
踩
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协议具有数据完整性(传输过程进行完整校验)、数据隐私性(数据进行了加密)和身份认证(使用了认证证书)的特点。
看上面的架构图就知道,Https协议相对Http协议在应用层和传输层之间增加了安全层,在以前的版本中使用的是SSL协议,后来升级后修改成了TLS协议(传输层安全协议)。
TLS协议是由记录协议和握手协议组成:
Https中使用的加密算法有对称加密和非对称加密:
简单的一看就会发现,非对称加密比对称加密来说更加安全,为什么还需要使用对称加密呢?其实对称加密和非对称加密各有优缺点,对称加密其算法简单,所以加密解密过程比较快,而非对称加密虽然安全但是加解密过程比较复杂效率慢。Https将对称加密和非对称加密结合在了一起,首先使用非对称加密来确定双方的身份,然后使用对称加密来传输消息,这就好比谍战片中,见面先对暗号,对完暗号传纸条,纸条还是加密了的。
这里需要注意的一点是公钥一开始我们肯定不知道的,那公钥是怎么来的呢?公钥同样是由服务器发送给我们的,那么就会出现一个问题,假设服务器是由黑客假冒的那岂不是所有的信息都被黑客截取了,所以Https协议引入了SSL证书。
介绍SSL证书之前先介绍一下数字签名:数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
签名大家都熟悉,比如兑换的支票上需要签名来证明支票确实是由拥有者开出来的,在计算机上不可能出来个手动签名,它是通过数字签名来确定服务端的身份的。
数字签名的执行流程:
因为加密信息是由报文产生的摘要信息,如果报文发生改变那么摘要信息必然会发生改变,解密后的结果无法匹配,那么数字就会验证失败,所以数字签名也保证了报文的完整性。
数字证书是由电子商务认证中心(简称为CA中心)所颁发的一种较为权威与公正的证书,数字证书里包含了公钥以及拥有者的信息,相当于平常使用的身份证。
数字证书是用来干啥的呢,就好比我们去银行保险柜取东西,银行需要本人持有身份证证明你的身份才会给你,同样服务器发送的数据需要持有数字证书才能打开。正常情况下访问一个网站,客户端会先去获取该网站的证书,获取到证书后校验证书是否是安全合法的,校验安全后才会建立连接发送报文。
看一下CSDN的数字证书:
数字证书中包含证书的持有者信息、数字签名、加密算法和公钥信息等信息,正常用户获取到证书后会通过数字签名的验证过程来验证其有效性的,那么可能又有问题了,黑客不可以自己伪造个证书通过私钥加密生成数字签名同时将公钥等信息包装了发送出去吗?其实证书是可以自己颁发的,但是操作系统是不承认。证书中还包含以下图中信息,这些信息来证明证书的颁发机构,而在操作系统中有根证书列表信息,系统会通过一些列的手段证明了证书信息的颁发机构是权威机构后才会承认(就好比我们上了大学之后由学校颁发了的毕业证,当面试后公司会查询毕业证信息,而一些野鸡大学可能就不被公司所承认),当然如果把系统中的根证书列表卸了之后就会发现没有一个证书是被系统所承认的。
根据上面的简单介绍我们可以将Https协议的安全认证分为下面几步:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。