浅谈HTTPS与HTTP的区别

2021-01-13 10:58发布

作者:Lpyexplore

链接:https://lpyexplore.blog.csdn.net/article/details/106465330

来源:CSDN
著作权归作者所有,转载请联系作者获得授权,切勿私自转载。

引言

因为我的上一篇文章讲解了一下HTTP协议到底是什么, 所以我们这篇文章就来讲解一下HTTPS协议是什么?它到底跟HTTP协议有什么区别。

还有不明白HTTP协议的小伙伴可以去查看一下我的上一篇文章,先简单了解一下,下面放上链接——浅谈HTTP协议的作用过程

  • 公众号:前端印象

  • 不定时有送书活动,记得关注~

  • 关注后回复对应文字领取:【面试题】、【前端必看电子书】、【数据结构与算法完整代码】、【前端技术交流群】

正文

如果有小伙伴已经了解了HTTPS的定义及其请求过程了,可以直接从第三部分开始看

一、HTTPS的定义

HTTPS叫做安全超文本传输协议 。我们能清楚地看到,HTTPS比HTTP多了一个S,这个S就是 TLS/SSL ,TLS/SSL 就是用于加密传输 、身份验证的网络协议。所以在中文名上,HTTPS也比HTTP多了一个安全, 这说明HTTPS协议比HTTP协议更安全。

接下来我们来看一张图
在这里插入图片描述
HTTP和HTTPS都是用来客户端与服务器端传递信息的, 只不过HTTP是没有加密的,是以明文的方式传递信息; 而HTTPS是会经过加密的,以密文的方式传递信息,相对比较安全。

那么HTTPS是如何加密的呢?它的请求过程是怎么样的?我们来看下一部分。

二、HTTPS请求过程

首先用一张图,让大家大致了解一下HTTPS的请求过程
在这里插入图片描述
HTTPS协议请求的过程如下:
客户端发送https请求 =>
客户端与服务器建立SSL连接,服务器返回证书公钥给客户端 =>
客户端验证证书公钥,若验证通过,则利用证书公钥随机生成一个密钥,并发送给服务器 =>
服务器接收密钥,并用服务器自己的私钥解密密钥 =>
客户端与服务器端传递信息就用密钥来加密

接下来我们来形象地分步骤讲解一下HTTPS协议请求的过程:

  • 客户端与服务器建立SSL连接,服务器返回证书公钥给客户端

客户端发送https请求, 首先要与服务器建立SSL连接,简单来说就是客户端和服务器端准备商量,等会要用什么方式来给我们传递的信息加密,这样做一个统一。 那么客户端和服务器端要商量加密方式的话,就先由服务器端来提议,所以这时服务器先返回一个证书公钥给客户端, 这个证书公钥就相当于服务器先提出的加密方式的意见。

  • 客户端验证证书公钥

服务器已经提出了自己对于加密方式的意见(返回的证书公钥),客户端需要针对这个意见做个判断,判断是否同意这种加密方式(验证公钥的颁发机构 、过期时间等等),若不同意,则发起抗议(弹出警告框);若同意,则(客户端利用证书公钥加密生成一个随机值生成密钥),然后发送给服务器。

  • 服务器接收密钥,并用服务器自己的私钥解密密钥

服务器接收到客户端传过来的密钥,该密钥是客户端按照服务器传过去的证书公钥来制定的,既然证书公钥是服务器提出的,那么服务器一定知道如何解密这个密钥(用证书私钥解密这个密钥),服务器用证书私钥一解密,就知道客户端提出的暗号是什么了, 那么此时,这个暗号就只有客户端和服务器端知道了,他们之间传递信息,就只需要对暗号就可以了。

三、HTTPS与HTTP的区别

https 与 http 的区别如下:

  1. http 是明文传输的 ; https 是安全的加密传输

  2. http 的默认端口是80 ; https 的默认端口是443

  3. https 需要申请证书 ; http 不需要

四、HTTPS的优缺点

  • HTTPS的优点

  1. https 是加密传输协议, 他具有一定的安全性,可以在一定程度上保证在传递信息的过程中,信息不被盗取 、修改。

  2. https 协议增加了攻击者的攻击成本

  • HTTPS的缺点

  1. https 也不是绝对的安全,在极少数情况下,还是会有信息被盗取的危险。

  2. https 的请求过程比较长,从而使得客户端接收到请求的数据时间变长,用户体验可能会差一点点

  3. https 协议需要先申请证书,证书是需要花钱购买的,增加了开销。

结束语

好了,对于HTTPS的简单讲解就到这里了,希望对大家有所帮助,喜欢的点个关注点个赞,我是前端Lpyexplore。