忆龙2009:采用SSL握手方式的服务器验证过程
2009-11-21 18:39
302 查看
在SSL握手过程中,服务器向客户端发送一个服务器证书来对它自己进行验证,客户端使用该证书来验证该证书链的合法性.
采用SSL协议的客户端按照以下步骤来验证服务器的身份:
首先,客户端检查服务器证书的有效期,是否当前日期及时间已经超出了证书的有效期限,如果已经超出有效期,验证过程将终止.如果在有效期限之内,会继续下面的验证过程.
其次,检查颁发证书的机构是否是一个被信任的证书机构?每一个使用SSL协议的客户端,都会维护一个受信任的证书颁发机构清单,这个清单可以决定哪些服务器证书是可以被客户端接受的. 如果颁发机构的DN与其客户受信任列表上的颁发机构的DN匹配,验证过程将继续;如果不匹配,除非客户端能够在证书链找到匹配的颁发机构,否则验证过程将结束.
接着,客户端会检查证书颁发机构的公钥是否能够识别颁发者的数字签名? 客户端使用证书机构的公钥(在第2步中受信任证书机构中可以找到)来验证其数字签名. 如果自上次签名之后的服务器证书信息已经变更,或者证书机构的公钥与用来对服务器证书签名的私钥不对应,客户端将结束对服务器的验证过程.
然后,客户端会检查保存在服务器证书上的域名是否与当前服务器所处的域匹配? 这一步能够确认服务器在网络中所处的实际位置. 尽管第4步并不是SSL协议中规定的技术要求,但是它却提供了一种防止”中间人攻击”的手段. 客户端必须执行这一步骤,并且当发现域名不匹配时,拒绝对服务器的验证及断开相应的连接.
到最后,服务器已经被客户端验证通过了.如果客户端因为任何其它原因没能执行第5步,服务器是不能完成验证的.这样客户端将无法与服务器建立起一个加密的连接通道.
采用SSL协议的客户端按照以下步骤来验证服务器的身份:
首先,客户端检查服务器证书的有效期,是否当前日期及时间已经超出了证书的有效期限,如果已经超出有效期,验证过程将终止.如果在有效期限之内,会继续下面的验证过程.
其次,检查颁发证书的机构是否是一个被信任的证书机构?每一个使用SSL协议的客户端,都会维护一个受信任的证书颁发机构清单,这个清单可以决定哪些服务器证书是可以被客户端接受的. 如果颁发机构的DN与其客户受信任列表上的颁发机构的DN匹配,验证过程将继续;如果不匹配,除非客户端能够在证书链找到匹配的颁发机构,否则验证过程将结束.
接着,客户端会检查证书颁发机构的公钥是否能够识别颁发者的数字签名? 客户端使用证书机构的公钥(在第2步中受信任证书机构中可以找到)来验证其数字签名. 如果自上次签名之后的服务器证书信息已经变更,或者证书机构的公钥与用来对服务器证书签名的私钥不对应,客户端将结束对服务器的验证过程.
然后,客户端会检查保存在服务器证书上的域名是否与当前服务器所处的域匹配? 这一步能够确认服务器在网络中所处的实际位置. 尽管第4步并不是SSL协议中规定的技术要求,但是它却提供了一种防止”中间人攻击”的手段. 客户端必须执行这一步骤,并且当发现域名不匹配时,拒绝对服务器的验证及断开相应的连接.
到最后,服务器已经被客户端验证通过了.如果客户端因为任何其它原因没能执行第5步,服务器是不能完成验证的.这样客户端将无法与服务器建立起一个加密的连接通道.
相关文章推荐
- 【求助,已解决】已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL 提供程序, error: 0 - 为验证提供的消息或签名已被改变)
- Samba 建立服务器基于用户验证方式的共享目录(注意:服务器采用用户验证)
- 在Web服务器上配置SSL来验证CA服务器的搭建过程
- 阿里云服务器发送邮件失败,25端口被禁用,采用ssl 方式 465端口发送
- 使用openssl工具来验证服务器证书以及握手过程
- 异常:已引发: "已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 31 - 加密(ssl/tls)握手失败) 已成功与服务器建立连接
- nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)
- unix环境IPC通信之socket(三),tcp采用并发服务器编程实例,多进程方式 4000
- 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证
- SSL/TLS握手过程
- 记录一次给网站服务器添加SSL(https)的过程
- 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证
- SSL/TLS 握手过程详解
- 采用文件方式来设定交换分区的全过程
- SSL握手过程
- SQLServer 2012 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。
- HTTP协议客户端和服务器交互的三次握手、持续连接、断开连接过程
- android采用post方式获取服务器数据
- Oracle中采用存储过程的方式批量更新数据
- 在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互