HTTPS = HTTP + SSL

一、什么是HTTPS协议

  HTTPS协议是建立在HTTP协议上面的一种应用层的协议,主要是用于客户端与服务端之间的数据交互,现在实际应用于安全性较高的通讯场景,类似于商城,某些门户网站等,采取HTTPS协议来协助实现可靠传输。但这个协议仅仅只是解决了部分问题,并不能从根本上解决网络中数据传输的安全问题。安全问题也是我们持续探索的一个领域。

二、为什么要使用HTTPS协议

  这里我们以HTTP和HTTPS协议举例,为什么我们愿意花大成本购买CA证书以及各种手续来使用HTTPS协议,HTTPS协议到底解决了网络传输的哪些痛点,我们来分析下整个网络传输的流程:

主要分为以下几个步骤:

  • 客户端携带相关参数主动发起请求给服务端,此过程是可见的;
  • 服务器端对客户端做相应的校验,如果校验成功则响应客户端数据请求,否则则拒绝建立数据传输。

在整个网络传输的过程中,客户端和服务端一方面扮演着主动发送方,一方面又扮演着被动接收方,一旦数据发送出去进入互联网后,就没办法对其进行完整性验证,也就无法保证接收到的数据是真实有效的,这就可能产生很多恶意攻击由此对 C/S方造成损害。 这也就是使用HTTPS的原因,因为HTTPS协议实际上是解决了请求双方的身份鉴证问题,也对传输的数据进行加密处理,修正了HTTP的些许弊端。

三、解决方案

  HTTPS = SSL + HTTP
  HTTPS解决两个问题:身份鉴证 + 数据加密传输
  SSL协议采取的是公钥加密法,客户端向服务器端索取公钥,然后用公钥来加密会话信息,服务器收到秘文后,用私钥解密。
  但是随之带来了两个问题:
  1. 如何保证公钥不被篡改?

   解决办法:将公钥放在CA证书中,只要证书是可信的,那么公钥就是可信的。

  2. 公钥加密的数据量太大,该怎么样来进行优化?

   解决办法:每一次会话(session)都会生成一个“对话密钥”,用对话秘钥来对数据进行加密,由于对话秘钥是对称加密,所以每次运算的速度都非常快,而服务器的公钥对这个“对话秘钥”进行加密,就会减少加密的时间,提高传输效率。

  SSL协议的主要过程为:

  1、客户端向服务端请求公钥,并验证公钥;

  2、双方协商生成对话秘钥;

  3、双方按照些上好的对话秘钥进行数据传输。

  其中前两步就是握手过程,整个握手过程都是明文传输,分为四个阶段:

阶段一(Client Hello)

客户端向服务器发出加密通信的请求,同时必需的信息是:

 (1)客户端的SSL/TLS 协议版本;

 (2)一个随机数,用于生成“对话秘钥”;

 (3)支持的加密算法,例RSA公钥加密;

 (4)支持的压缩方法。

阶段二(Server Hello)

  在这个阶段服务器会根据自己本身的相关参数作以统一,并返回以下信息:

 (1)服务器证书;

 (2)一个随机数,用于生成“对话秘钥”

 (3)协商好的SSL/TLS版本,如果浏览器达不到服务器支持的最小版本,则通信关闭;

 (4)确认的加密算法。

  除了上面这些信息,如果服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供"客户端证书"。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书。

阶段三(客户端回应)

客户端首先会校验服务器返回的证书,如若证书过期,或者证书不是可信机构颁布,或证书域名与实际请求域名不一致,就会向访问者提示一个警告,询问是否要继续通信。 如果证书校验无误,则向服务器端发送以下信息:

 (1)一个随机数,用于生成“对话秘钥”

 (2)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

 (3)客户端握手完毕通知。

阶段四(服务端回应)

服务器根据上一步客户端发送的随机数,加上之前的两个随机数,生成本次会话的“对话秘钥”,然后向客户端发送以下信息:

 (1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

 (2)服务器握手完毕通知。

到此,以服务器的最后一次握手结束整个加密协商过程,之后的传输都将以HTTP来进行,不过会话信息都是由“会话密钥”加密过的。

转载于:https://juejin.im/post/5d00e420f265da1b7004a23f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值