假设你已经懂了非对称加密、数字签名、数字证书,如果不懂的话下面的你也看不懂。
HTTPS的作用:在传输过程中通过加密来保护数据安全的,以免用户敏感信息被第三方获取后破解。它的工作流程如下:
开始加密通信之前,客户端和服务器首先必须建立连接和交换参数,这个过程叫做握手(handshake)
- 首先客户端向服务端发送一个请求,里面主要包括:一个客户端生成的随机数(Client random),以及客户端支持的加密算法(都是对称加密算法)。
- 服务端收到请求后从中选出一组加密算法和HASH算法,并将自己的数字证书、以及一个自己生成的随机数(Server random)发送给客户端。
- 客户端收到回复后,验证证书是否有效,如果有效就生成一个随机数,然后用证书中所包含的公钥加密这个随机数生成密文,并且用服务端刚才挑选的HASH算法对这个随机数进行加密,生成的hash值称之为校验值1,然后将密文和校验值1一起发送给服务端。
- 服务端收到后,用自己的私钥解密出随机数,然后用HASH算法对这个随机数进行加密得到校验值2,如果校验值1和校验值2相同则说明消息未被篡改,可以信任。最后,使用该随机数,加上之前第2步中选择的加密算法,加密一段握手消息,发还给客户端。同时HASH值也带上。
- 客户端收到服务器端的消息后,首先检查消息是否为握手消息,然后计算HASH值是否与发回的消息一致。
- 握手结束后,客户端和服务器端使用握手阶段产生的随机数以及挑选出来的算法进行对称加解密的传输。