SSL握手过程客户端如何验证服务端证书真伪?

刚在阅读大神阮一峰的一片博文时,看到如下说明
原文链接http://www.ruanyifeng.com/blo...

【爱丽丝:客户端】
【鲍勃:服务端】
第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。
第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

问题:在第三步的时候,爱丽丝凭什么确认数字证书有效?

阅读 8.2k
2 个回答

客户端会有一个有效证书串,一般的浏览器都会内置很多常见服务器的这个证书,特殊的服务器就需要前期通过手工将证书添加到客户端。客户端通过比对来确认证书的有效性

我在补充一下:浏览器会内置一些著名的签发证书的机构的证书,也就是这些机构的公钥。当收到服务端的证书后,这个证书要么是这些机构签发的,要么是这些机构认证的的下级机构签发,这样的级数可以有很多层,服务器的证书会是一个证书链,可以一级一级验证,直到用内置的公钥验证成功。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题