浏览 3869 次
锁定老帖子 主题:ssl握手过程和服务器认证
精华帖 (0) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-12
最后修改:2009-02-16
1.client向server端发送ssl版本号,cipher设置,随机数(randomly generated data)和其他sever端所要求的信息。 2.server端向client端发送ssl版本号,cipher设置,随机数(randomly generated data)和其他client端所要求的信息。server发送其证书信息,如果是双向认证(client请求server端资源时,server需要对client端进行认证),则请求client发送证书。 3.client端根据server发送过来的信息来认证server,如果认证失败,提示client user不能够建立encrypted and authenticated connection.如果认证成功,执行4。 4.client利用handshake过程所产生的数据为会话建立premaster secret,用server的public key(在第2步的server证书中得到)对其加密。 5.如果server端需要双向认证,client端对another piece of data进行签名,这个数据对于handshake是唯一的,client和server都知道该数据。client发送这个signed data,client的证书和premaster secret. 6.如果server端需要双向认证,server对client端进行认证,如果认证失败,则结束会话,否则server利用private key将premaster secret解密,将解密的premaster secret经过一系列操作生成master secret(client也执行了这些操作,生成了master secret)。 7.client和server利用master secret生成session key,也就是SSL session中用到的对称密钥。 8.client发送消息通知server:以后发消息都用session key加密,然后发送一个加密消息,"client端的handshake完成"。 9.server发送消息通知client:以后发送消息用session key加密,然后发送一个加密消息,"server端的handshake完成"。 10.SSL handshake完成了,SSL session开始了。 Server Authentication client端接收到了server的证书,怎样和client中的public key来认证服务端呢?需要回答4个问题: 1.server的证书过期了吗? 2.server证书中的issuing CA是trusted CA? 如果server证书中的issuing CA的distinguished name和client的trusted CA的某个证书的distinguished name相同,则答案是肯定的。 如果server证书中的issuing CA没有在trusted CA列表中,但the client can verify a certificate chain ending in a CA that is on the list,仍然可以。 3.client的issuing CA的public key能否验证server证书中的issuer's digital signature? 4.在server证书中的domain name和server的domain name是不是相同的? 如果这些问题都是肯定的,则server认证成功。 英文原文见: http://docs.sun.com/source/816-6156-10/contents.htm#1045936 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |