一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器请求和应答的标准(TCP),用于从Web服务器传输超文本到本地浏览器的传输协议。

HTTPS:是以安全为目标的HTTP通道,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTP开发的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私和完整性

二、HTTP的工作原理

  1. 客户端与服务器建立TCP连接(三次握手)
  2. 连接成功后,客户端发送请求给服务器
  3. 服务器接收到客户端发送的消息后作出响应,并将响应信息发给客户端
  4. 服务器发送玩响应信息后,就会断开TCP连接,因此HTTP是无状态的,下一次访问的时候不知道之前访问的过程
  5. 客户端收到响应信息,浏览器开始解析,将HTML文档解析后呈现在浏览器上

三、HTTPS的工作原理

在这里插入图片描述

  1. 客户端发起HTTPS请求

    用户在浏览器中输入一个HTTPS网址,连接到server的443端口

  2. 传送证书

    采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥。

    服务器将证书发送给客户端,这个证书其实就是公钥,只是包含了很多信息,比如证书的颁发机构,过期时间等

  3. 客户端解析证书

    这部分工作是由客户端的TLS完成的,首先会验证公钥是否有效,如果发现异常就会弹出一个警告,提示证书存在问题

  4. 生成随机秘钥

    如果证书没有问题,那就生成一个随机对称秘钥

  5. 加密对称秘钥

    公钥对该对称秘钥进行加密。

  6. 传送加密信息

    将加密后的对称秘钥发送给服务器,目的是让服务端得到对称秘钥,这样以后客户端和服务端的通信就可以通过这个对称秘钥进行加密和解密了。

  7. 服务端解密信息

    服务端用私钥解密后便得到客户端传过来的对称秘钥,然后把内容通过该秘钥进行对称加密

    所谓对称加密就是将信息和对称秘钥通过算法混合在一起,这样除非知道对称秘钥,不然无法获取内容。

  8. 传输加密后的信息

    这部分信息是服务器用对称秘钥加密后的信息,可以在客户端被还原

  9. 客户端解密信息

    客户端用之前生成的对称秘钥解密服务端传过来的信息,获取内容。

四、HTTP和HTTPS的区别

  1. HTTPS协议需要到CA申请证书,一般免费证书较少,因而需要一定费用
  2. HTTP是超文本传输协议,信息是明文传输的,数据是不加密的,而HTTPS则是具有安全性的SSL加密传输协议。
  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,HTTP是80端口而HTTPS是443端口
  4. HTTP的连接很简单,是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议要安全