HTTPS通信机制

概述

使用HTTP协议进行通信时,由于传输的是明文所以很容易遭到窃听,就算是加密过的信息也容易在传输中遭受到篡改,因此需要在HTTP协议基础上添加加密处理,认证处理等,有了这些处理机制的HTTP成为HTTPS
HTTPS是在应用层和传输层之间加入了SSL(Secure Socket Layer)安全套接层和TLS(Transport Layer Security)安全传输层协议。

正常情况下HTTP直接与TCP通信,而HTTPS是先与SSL通信后再与TCP进行通讯。

HTTPS加密机制

要了解HTTPS的加密方式首先需要只要什么是共享密钥加密(对称密钥加密)和公开密钥加密(非对称密钥加密)。

  • 共享密钥加密:发送方传输给接收方一段加密的信息,那么接收方就要用密钥来解密这段信息,加密与解密的密钥是一样的,这样的加密方法为共享密钥加密,对于共享密钥加密,如果获取密钥的话那么任何人都可以解密这段信息。

  • 公开密钥加密:公开密钥解决了共享密钥的问题,传输的信息用同一个公开的密钥进行加密,但是接收方解密的时候用私有的密钥进行解密,公开密钥加密又称作非对称密钥加密,当截取者获取公开密钥时也无法对信息进行解密,必须用私有密钥才可以解密。

HTTPS采用混合加密机制
HTTPS使用公开密钥加密的方式来传输用于共享密钥加密的密钥,然后双方都存在这个密钥后用共享密钥加密的方式进行信息传输。
然而这样做也会出现一些问题,当服务端与客户端在公开密钥加密的方式下进行通信时,怎样确保这个公开的密钥就是服务器传过来的,也有可能是在传输的过程中被替换掉了,由于存在这样的原因,所以需要使用由权威的数字证书认定机构颁发的公开密钥证书。

这样HTTPS传输的过程大概是这个样子:


HTTPS安全通信流程

  • 客户端发送请求报文开始SSL通信,报文中包含客户端支持的SSL版本,加密组件列表。

  • 服务器可进行SSL通信时会发送响应报文。

  • 之后服务器发送Certificate报文,报文中包含公开密钥证书。

  • 最后服务器发送报文通知客户端最初的SSL握手结束

  • SSL第一次握手结束后,客户端会用服务器的公开密钥加密一段随机密码串传输给服务器。

  • 接着客户端会继承发送报文提示服务器,在此报文以后的通信将使用之前发送过去的随机密码串进行加密处理。

  • 最后客户端发送结束报文。

  • 服务器同样发送报文提示客户端,在此报文以后的通信将使用客户端之前发送过来的随机密码串进行加密处理。

  • 服务器发送结束报文。

  • 服务器和客户端的结束报文交换完后,SSL连接建立完成,开始HTTP请求。