SSL交互过程
HTTPS将HTTP和SSL结合,即加了SSL隧道封装的HTTP,通过SSL对客户端身份和服务器进行验证,对传输的数据进行加密。不同情况下SSL的协商过程存在差异,本节以只验证服务器为例介绍。SSL的协商过程如图1所示。
图1 SSL协商过程
- 客户端发送的第一条消息为ClientHello,其中包含了客户端所推荐的加密参数和准备使用的加密算法。
- 服务器以三条消息进行响应:
- 发送选择加密算法的ServerHello。
- 服务器发送携带自己公钥的Certificate消息。
- 服务器发送表示握手阶段不再有任何消息的ServerHelloDone。
- 客户端发送一条Client Key Exchange消息,将一个随机生成的使用服务器公钥加密的密钥发送给服务器。
- Change Cipher Spec消息表示客户端在此之后发送的所有消息都将使用刚刚商定的密钥进行加密。
-
Finished消息包含了对整个连接过程的校验,是通过先计算已交互的握手消息的Hash值,再利用协商好的密钥对Hash值加密得到的。
服务器利用同样地方法计算已交互的握手信息的Hash值与Finished消息解密结果比较,就能够判断要使用的加密算法是否是安全商定的。
- 一旦服务器接收到了客户端的Finished消息,它就会发送自己的Change Cipher Spec和Finished消息,于是连接就准备好进行应用数据的传输了。