SSL握手过程客户端如何验证服务端证书真伪?
刚在阅读大神阮一峰的一片博文时,看到如下说明
原文链接http://www.ruanyifeng.com/blo...
【爱丽丝:客户端】
【鲍勃:服务端】
第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。
第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。
问题:在第三步的时候,爱丽丝凭什么确认数字证书有效?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
客户端会有一个有效证书串,一般的浏览器都会内置很多常见服务器的这个证书,特殊的服务器就需要前期通过手工将证书添加到客户端。客户端通过比对来确认证书的有效性
我在补充一下:浏览器会内置一些著名的签发证书的机构的证书,也就是这些机构的公钥。当收到服务端的证书后,这个证书要么是这些机构签发的,要么是这些机构认证的的下级机构签发,这样的级数可以有很多层,服务器的证书会是一个证书链,可以一级一级验证,直到用内置的公钥验证成功。