情诗网 >高端情话 > 正文

前端网络高级篇(一)HTTPS

来源:情诗网    2020-11-07    分类:高端情话

HTTP是Web中常见的通信方式,无状态,简单易用。当然,它的不足之处也非常明显:

为了解决HTTP协议的痛点,采用通信加密的方式,继而出现HTTPS协议。

1. HTTPS

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。
服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

image

1.1 SSL加密

加密技术有两种:

https采用共享密钥加密和公开密钥加密两者并用的混合加密机制,具体加密方式参考第二节。

SSL不仅提供加密处理,而且使用证书,来确定对方的非伪装的。

1.2 数字证书

证书是由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。

image

2. HTTPS 通信步骤

HTTP+加密+认证+完整性保护=HTTPS。上节提到,“https采用共享密钥加密和公开密钥加密两者并用的混合加密机制”,解释一下,就是用公开密钥加密传递密钥,用共享密钥加密算法加密报文内容

为什么HTTPS要采用混合加密呢?
因为公开密钥加密的处理速度要远远慢于共享密钥加密,所以,在通信最频繁的环节 - “报文加密”,采用了共享密钥。那么,更加安全的公开密钥加密,就非常适合“报文密钥”的传递来。

具体加密,解密,验证步骤如下:

image
  1. 客户端发起HTTPS请求
    用户在浏览器里输入一个https网址,然后连接到server的443端口(默认HTTP的端口号为80,HTTPS的端口号为443)。

  2. 服务端的配置
    采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。
    这套证书其实就是一对公钥和私钥。

  3. 传送证书
    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

  4. 客户端解析证书
    这部分工作是有客户端的TLS来完成的。
    首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
    如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密

  5. 传送加密信息
    这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了

  6. 服务段解密信息
    服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。
    所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息
    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

  8. 客户端解密信息
    客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策

热门文章