1 / 5
文档名称:

第二章对SSL握手协议的研究.doc

格式:doc   大小:67KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第二章对SSL握手协议的研究.doc

上传人:小博士 2019/8/9 文件大小:67 KB

下载得到文件列表

第二章对SSL握手协议的研究.doc

相关文档

文档介绍

文档介绍::..•对SSL握手|办议的研究(part-l)第三章•对SSL握手协议的研究(part-2)•对SSL记录协议细节和实现的介绍第六章••Client处理和回应ServerHello阶段客户端收到服务器发过来的那些消息,耍做的是验证服务器证书,发送自己的证书(如果双向认证),发送计算出的预主密码,发送证书验证消息。ClientCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]ClientFinishedMessage*Optionalorsituationntmessages[ChangeCipherSpec]isnotaTLShandshakemessagebutisanindependent」,最先发出的是serverhello,client收到后将SSL会话ID,服务器端的一个随机数,协商岀的SSL协议版本号以及密钥套件放到会话缓存中。收到ServerCertificates接下来收到的应该是server端的证书消息了,取出所冇的消息,最头上的是server证书,最末端的CA根证书。在SUNJDKJSSE中实现的SSL是这样处理的:从SSLContex屮取出trustmanager,如果用过javaSSL编程的同学应该知道,可以口己实现X509TrustManager和X509KeyManager两个接口来定制对证书的验证,sunjdk屮就是调用这个trustmanager的验证方法来验证证书(在解决浏览器检测到证书是口签名的时候跳出警告框的问题就是可以自己实现这个trustmanager來让浏览器不跳出警告框)。JDK当然也冇默认的证书验证实现,就是验证签名冇效性,验证证书是否过期等。证书签名的有效性验证是在取证书链中某证书中的公钥验证前一个证书的签名,这样第一个证书就是用第二个证书的公钥來验证,那冇人可能会问最后的根CA的证书谁来验证?根CA的证书是自签名的,就是自己给自己签名,没人管的了,JDK中某个文件中有存储一堆可信任的证书发行机构的证书列表,如果你的根CA在那个列表屮并对比后确实是那个根CA的证书那就0K,验证通过,这个可信任的机构也可以门己实现那个trustmanager來添加设置。收到ServerKeyExchange消息RSA方式密钥交换消息则把消息中的加密用公钥放入会话缓存中,作为客户端这边握手阶段的写密钥而不是用服务器证书中的公钥。DH方式的消息就把消息中的p,g,Ys三个参数记录下来,有这些client端就可以计算岀pre-master了,只要冋头再把自己这边的Yc参数发过去,server端就也能计算出相同的pre-maseter了。将消息中的证书类型列表和可信任证书发行机构列表保存下來,