client发送的加密数据,这个消息非常关键,一是能证明握手数据没有被篡改过,二也能证明自己确实是密钥的拥有者(这里是单边验证,只有server有certificate,server发送的Finished能证明自己含有private key,原理是一样的)。client将之前发送的所有握手消息存入handshakemessages缓存,进行MD5和SHA-1两种hash运算,再与前面的master secret和一串常量"client finished"进行PRF伪随机运算得到12字节的verify data,还要经过改进的MD5计算得到加密信息。为什么能证明上述两点呢,前面说了只有密钥的拥有者才能解密得到pre-master key,master key,最后得到key block后,进行hash运算得到的结果才与发送方的一致。
8) Server发送ChangeCipherSpec
Server指示client从现在开始发送的消息都是加密过的。
9) Server发送Finishd
与client发送Finished计算方法一致。server发送的Finished里包含hash给client,client会进行校验,如果通过,说明握手过程中的数据没有被第三方篡改过,也说明server是之前交换证书的拥有者。现在双方就可以开始后续通信,进入Application context了。
三、SSL的应用场景SSL协议主要应用于"HTTPS"和"SSL VPN"两大场景。
HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证。
例如某银行为了方便客户,提供了网上银行业务,客户可以通过访问银行的Web服务器进行帐户查询、转帐等。通过在客户和银行的Web服务器之间建立SSL连接,可以保证客户的信息不被非法窃取
SSL VPN是以SSL为基础的VPN技术,利用SSL提供的安全机制,为用户远程访问公司内部网络提供了安全保证。SSL VPN通过在远程接入用户和SSL VPN网关之间建立SSL安全连接,允许用户通过各种Web浏览器,各种网络接入方式,在任何地方远程访问企业网络资源,并能够保证企业网络的安全,保护企业内部信息不被窃取。