HTTP与HTTPS

HTTP协议是无状态的(对于事物处理没有记忆能力,如果后续处理需要前面的信息则需要重传),使用明文进行传输的协议。它主要有以下的不足:

  • 通信使用明文,所以内容是可以被窃听的;
  • 不会验证双方的身份,因此可能会遇到伪装;
  • 无法验证报文的完整性,有可能被篡改。

HTTPS是在HTTP协议下加入了SSL(安全套接层)。HTTP先和SSL通信,然后由SSL和TCP通信。

HTTPS加密方式

SSL有一个四次握手的过程,该过程为:

  • 客户端发送支持的加密方式以及一个随机数client random给服务器;
  • 服务器选择其中的一种加密方式,并且再加上另外一个随机数server random,和数字证书,发送给客户端;
  • 客户端确认这个数字证书是有效的,并且再生成一个新的随机数,将这个随机数用服务器发送给它的数字证书中的公钥进行加密发送给服务器;
  • 服务器利用自己的私钥进行解密,获得这个随机数,利用他们协商的加密方式将前面的这三个随机数计算生成一个对话密钥,至此握手阶段完成,之后的会话他们就通过这个对话密钥进行加密。


    HTTP与HTTPS_第1张图片
    SSL握手过程

    HTTPS可以完成上述HTTP的缺陷:通过对通信内容加密保证了内容的安全性。并且通过数字证书可以验证双方的身份,因为数字证书是由权威机构(CA)颁布的。并且因为报文中有发送方的数字签名,所以接收方可以先验证数字签名,从而验证了数据没有被篡改,保证了完整性。

HTTPS的缺陷:

HTTPS的主要缺陷就是通信慢以及消耗CPU以及内存等资源。
因为HTTPS的传输过程加入了SSL层,所以整体通信过程会变慢;而且由于使用了加解密算法,会消耗大量的CPU以及内存。

参考资料:
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

你可能感兴趣的:(HTTP与HTTPS)