采用 SSL 握手方式的服务器验证过程

作者:忆龙2009 来源:忆龙2009的博客 日期:2010-1-31

在 SSL 握手过程中,服务器向客户端发送一个服务器证书来对它自己进行验证,客户端使用该证书来验证该证书链的合法性。

采用 SSL 协议的客户端按照以下步骤来验证服务器的身份:

  • 首先,客户端检查服务器证书的有效期,是否当前日期及时间已经超出了证书的有效期限,如果已经超出有效期,验证过程将终止。如果在有效期限之内,会继续下面的验证过程。
  • 其次,检查颁发证书的机构是否是一个被信任的证书机构?每一个使用 SSL 协议的客户端,都会维护一个受信任的证书颁发机构清单,这个清单可以决定哪些服务器证书是可以被客户端接受的。 如果颁发机构的 DN 与其客户受信任列表上的颁发机构的 DN 匹配,验证过程将继续;如果不匹配,除非客户端能够在证书链找到匹配的颁发机构,否则验证过程将结束。
  • 接着,客户端会检查证书颁发机构的公钥是否能够识别颁发者的数字签名?客户端使用证书机构的公钥 ( 在第 2 步中受信任证书机构中可以找到 ) 来验证其数字签名。 如果自上次签名之后的服务器证书信息已经变更,或者证书机构的公钥与用来对服务器证书签名的私钥不对应,客户端将结束对服务器的验证过程。
  • 然后,客户端会检查保存在服务器证书上的域名是否与当前服务器所处的域匹配? 这一步能够确认服务器在网络中所处的实际位置。 尽管第 4 步并不是 SSL 协议中规定的技术要求,但是它却提供了一种防止”中间人攻击”的手段。 客户端必须执行这一步骤,并且当发现域名不匹配时,拒绝对服务器的验证及断开相应的连接。
  • 到最后,服务器已经被客户端验证通过了。如果客户端因为任何其它原因没能执行第 5 步,服务器是不能完成验证的。这样客户端将无法与服务器建立起一个加密的连接通道。
相关文章