HTTP和HTTPS请求的响应流程

       HTTP的中文意思超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。而HTTPS是HTTP基于SSL加密后的传输协议。


 一、首先介绍介绍基于HTTP协议的请求响应流程。


       访问的流程如下图。

HTTP和HTTPS请求的响应流程

  1. 客户端发送请求。
  2. 请求首先会经过路由器/交换机/电信运营商处理后,发送给DNS解析器, 解析得到公网IP地址。
  3. 根据公网IP地址找到服务器,服务器返回响应。
  4. 再经过路由器/交换机/电信运营商返回到浏览器。

       经过第四步,我们的客户端(浏览器)就会拿到服务器返回的HTML文本,和对应的CSS、JS文件来渲染我们最终看到的网页。然而,HTTP协议是明文的,只要获悉了HTTP响应的格式,中间人就能轻易地对我们获取到的响应进行篡改。所以就有了基于SSL协议加密的HTTPS协议。

     

二、现在介绍基于HTTPS协议的访问流程。

       

        对于SSL协议,百度百科的解释是:“Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。”

        总之,SSL就是可以将你的HTTP请求和服务器返回的响应加密。流程图如下图,图看着有些复杂,实际就是多了使用证书加密和解密的过程。

HTTP和HTTPS请求的响应流程

     什么是CA证书?

  1. 对于HTTPS,首先我们要访问的企业建造的服务器必须要有CA证书。CA证书,是由第三方权威机构颁发的认证证书,当然,申请的企业要向第三方验证机构支付一定费用。具体概念,见百度百科:https://baike.baidu.com/item/ca%E8%AF%81%E4%B9%A6。
  2. CA证书包含企业的信息、和公钥。公钥对应私钥,公钥加密的数据必须用私钥解密,私钥加密的文件必须由公钥加密。

     加密流程

  1. 客户端向服务器请求到CA证书,得到证书后,会由公钥产生一段随机密码,由该随机密码加密我们客户端的请求,并且加密后的请求和加密随机密码(如果不加密,中间人获取到该随机密码后仍然可以**我们的加密请求)。
  2. 服务器拿到我们加密请求与加密的随机密码,找到与公钥对应的私钥,对加密内容解密,生成响应内容。响应的内容,会根据私钥再进行加密返回到我们的客户端。我们的客户端最后在根据之前的公钥进行解密,即可获取响应的HTML内容。

        

        以上是本人对HTTP和HTTPS响应过程的理解,错误之处望指正。