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 的区别如下:
- http 是明文传输的 ;https 是安全的加密传输
- http 的默认端口是80 ;https 的默认端口是443
- https 需要申请证书 ;http 不需要
HTTPS的优缺点
- HTTPS的优点
- https 是加密传输协议, 他具有一定的安全性,可以在一定程度上保证在传递信息的过程中,信息不被盗取 、修改。
- https 协议增加了攻击者的攻击成本
- HTTPS的缺点
- https 也不是绝对的安全,在极少数情况下,还是会有信息被盗取的危险。
- https 的请求过程比较长,从而使得客户端接收到请求的数据时间变长,用户体验可能会差一点点
- https 协议需要先申请证书,证书是需要花钱购买的,增加了开销。
好了,对于HTTPS的简单讲解就到这里了,希望对大家有所帮助,喜欢的点个关注点个赞,我是前端Lpyexplore。