SSL握手过程详解

来源:互联网 发布:医保控费软件 编辑:程序博客网 时间:2024/06/05 15:39

(1) 客户端->服务器端 发送ClientHello:

       客户端向服务器发送ClientHello信息,如:协议的版本号,版本信息,随机 数C1ientHello1.Random,加密方式(对称加密算法有DES和RC5,密钥交换算   法有RSA和DH,摘要算法有MD5和SHA),客户端公钥等发送给服务器;



(2) 服务器端->客户端 发送ServerHello:

        服务器向客户端回答ServerHello, 以及确定加密的组合方式等信息。

(3) 服务器端->客户端 发送Certificate:

       服务器产生一个随机数ServerHello.Random,和服务器的公钥(同常和其数字      证书Certificate放在同一个文件),这些都经由之前获取到的客户端的公钥进    行加密后发送给客户端,

(4) 服务器端->客户端 发送ServerHelloDone:

        验证成功后,服务器向客户端发送ServerHelloDone消息,达成了握手协议,即双方握手接通。

        服务器向客户端要求证书(这是可选择的,即:可以不向客户端索要)。     




 (5) 客户端->服务器端 发送ClientKeyExchange,ChangeCipherSpec,Finished:

        客户端用客户端的私钥解密收到的信息,从解密后的信息中获取服务器公钥和证书信息。

        if(用手头的CA公钥解密服务器的证书后,验证通过)

                      if(服务器端未索要证书)

                                   单向认证,客户端向服务器端发送Finished信息;

                      else if(服务器端索要了证书)

                                   双向认证,客户端向服务器端发送证书,并且服务器端必须对                         此证书验证。

                                          if(服务器端验证通过)

                                                 客户端向服务器端发送Finished信息;

                                          elseif(验证未通过)

                                                 断开连接,握手失败,exit 1

              产生新的随机数,然后用获取到的服务器公钥加密随机数                       C1ientHello2.Random、ClientKeyExchange和ChangeCipherSpec信息,

              然后发送给服务器。

        else if(验证失败)

               断开连接, 握手失败, exit 1。



(6) 服务器端->客户端 发送ChangecipherSpec和Finished:

        服务器端用服务器的私钥解密获取到的随机数C1ientHello2.Random和ClientKeyExchange和ChangeCipherSpec信息

        服务器发送握手完成的信息Finished,SSL安全通道开启;



(7) 服务器端<->客户端 对称加密传输:

        客户端和服务器端开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。




0 0
原创粉丝点击