原文链接:https://blog.csdn.net/qq_37964547/article/details/83514187?spm=1001.2014.3001.5501
秋招面试过程中,蘑菇街面试时,面试官问我http和https的区别,当时听到这个问题的时候,其实有点心虚的,因为自己对于这两个协议的具体区别只是基于表面,对于https还是比较陌生的,就按照自己的理解和这两个协议的联系简单说了一下他们之间的区别,后来面试官又问我有没有考虑过通过http协议如何实现https协议,这就触及到我的知识盲点了,所以当时这个问题我就没答上来。这几天也对这个问题进行了一些思考,查阅了相关的资料,就整理了一下:
一、https协议产生的背景
http协议是超文本传输协议,用于在web浏览器和网站服务器之间传输信息,http协议在传输数据的过程中,是以明文的方式传输,不进行任何数据加密的
,这样的一个缺点就是:在数据传输的过程中,当有一些恶意者截取了web浏览器和网站服务器之间的报文,就可以直接得到报文中的信息,所以在传输一些重要信息的时候会出现安全性问题
为了解决http协议这一缺陷,就出现了https协议,https是安全套接字层超文本传输协议,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。是在超文本传输协议http的基础上加了SSL/TLS协议,所以HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。
二、HTTPS工作原理
1、客户端发起https请求
这个就是过程用户在浏览器里输入一个https网址,然后连接到server的443端口
2、服务端配置
采用HTTPS协议的服务器必须有一套数字证书,这套证书可以自己制作,也可以向组织申请(区别就是自己制作的证书需要通过客户端的验证)。
这套证书其实包含一对公钥和私钥。
3、证书传送
证书就是公钥,包含颁发时间、过期时间等等
4、客户端解析证书
(1) 客户端收到数字证书后,检测内置的“受信任的根证书颁发机构”,查看解开数字证书的公匙是否存在。如果出现异常,则发出一个警告,提示该证书异常
(2)如果证书没问题,就生成一个随机值,并用证书对随机值进行加密,除非有对应的私钥,否则无法看到公钥的内容
5、加密信息传送
这个过程就是将加密后的随机值传送给服务器端,服务器端得到这个随机值后,后面客户端和服务器端的通信就可以通过这个随机值进行加密解密工作了
6、服务器端解密信息
服务器端用私钥解密后,就可以得到客户端传过来的私钥(随机值),然后把内容根据随机值进行对称加密,这样只有得到私钥才能对数据进行解密,就保证了数据传输的安全性啦
7、传输加密后的信息
服务器端加密后信息,通过http协议传输给客户端,客户端可以对这部分数据进行还原
8、客户端解密信息
客户端利用私钥对服务器端传过来的信息进行解密,这个时候客户端服务器端数据传输完毕,并且数据安全传输,第三方无法截取所传输的信息内容
三、http协议和https协议的区别
1、底层搭建区别–图解
可以看出https协议比http协议多了一层SSL/TLS协议,
2、http和https主要区别
(1) https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
(2) http是超文本传输协议,信息是明文传输,http则是具有安全性的ssl加密传输协议
(3) http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.
(4) http的连接根简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输。身份认证的网络协议,比http协议安全。
四、https的优缺点
1、https优点
(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。
2、https的缺点
(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行
————————————————
版权声明:本文为CSDN博主「Shining-LY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37964547/article/details/83514187
网友评论