前端面试计网篇——HTTP与HTTPS

853 阅读3分钟

HTTP(超文本传输协议)

HTTP是位于五层网络架构最上层的应用层协议,他定义了浏览器(用户)怎样向万维网服务器请求万维网文档,以及服务起怎样把文档传送给浏览器,自身是无连接,无状态的。HTTP请求和回复需要下一层运输层的协议实现,也就是使用经典的三次握手、四次挥手的TCP协议。然而由于HTTP明文传输数据,不提供任何的加密传输,使它的安全性受到了限制,因此诞生了HTTPS。

HTTPS(安全套接字层超文本传输协议)

HTTPS是在HTTP的基础上在HTTP和TCP之间又加入了SSL/TSL协议,通过这个协议可以验证服务器的真实性,也可以对数据传输进行加密保证它的安全性。

HTTPS与HTTP的区别

  1. HTTP是无连接、无状态的协议,而使用SSL/TSL实现客户端验证和加密传输的HTTPS显然更加安全;
  2. 两者的连接方式不同,使用的端口号也不同,HTTP使用80端口,HTTPS使用443端口;
  3. 使用HTTPS需要客户端申请到CA证书;
  4. 在跨域问题中,向使用仅非同协议的站点请求资源也会被认为跨域...

对称加密和非对称加密

在了解HTTPS的过程之前要先了解什么是对称加密什么是非对称加密。

对称加密:是指加密和解密使用同一个私钥。举个例子,小明有一个保险箱(数据)和与之相对应的钥匙(私钥),如果他想让我打开箱子他需要把保险箱和钥匙一起快递给我,我使用他给的钥匙打开。

非对称加密:加密和解密使用不同的秘钥,加密使用公钥,而解密需要私钥。举个例子,小明用一个公开的他和我都知道的钥匙(公钥)加锁了一个保险箱,然后他单独把保险箱快递了给我,我用之前约定好的与加密使用的公钥对应的钥匙(私钥)打开了它,这里公钥和私钥是不同的,也就是加密和解密使用的钥匙是不同的。

很明显的可以发现,对称加密依然有安全问题,如果在快递过程中,强盗抢走了保险箱和钥匙,那么他也能打开保险箱,而非对称加密只运送保险箱,就算被抢强盗依然没有钥匙打不开。而HTTPS使用的是对称加密和非对称加密一起的混合加密。

HTTPS流程

  1. 客户端使用https协议的域名,请求与对应IP地址的服务器建立连接;
  2. 服务器将CA证书(包括公钥等)传送给客户端;
  3. 客户端TSL验证证书的有效性,如果是无效的或者过期的则提示证书存在问题;如果有效,则解析证书,客户端生成随机的随机数(即随机私钥),使用从服务器端收到的证书(公钥)对这个随机数加密,在传输给服务器端;
  4. 服务器端使用与发送的公钥相对应的私钥来解密客户端发来的信息,至此完成了非对称加密阶段。之后服务器端使用解析出的客户端传来的私钥加密数据,并传输;
  5. 客户端使用相同的私钥解密信息,至此实现了对称加密,在之后的数据传输过程都会使用这一对称加密。

整个过程先是通过非对称加密的方式传输了之后对称加密使用的私钥,再用这个私钥进行之后的加密数据传输。这样就算有第三方拦截,也无法破解数据和钥匙。

参考: juejin.im/entry/68449… www.jianshu.com/p/918d9f517…