https 客户端(即浏览器)是如何校验公钥证书合法性的?
_泥巴_ 2017-12-01 03:53:16 在 https 通讯之前,需要经历握手阶段,描述如下:
第一步,爱丽丝给出协议版本号、一个客户端生成的随机数( Client random ),以及客户端支持的加密方法。
第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数( Server random )。
第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数( Premaster secret ),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即 Premaster secret )。
第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"( session key ),用来加密接下来的整个对话过程。
具体可见阮一峰老师博客的文章: http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
我的问题是,如果在第二步,我截获了鲍勃给爱丽丝的证书,然后给爱丽丝是我自己的数字证书,但是这个证书也是权威机构签发的,那么,爱丽丝在第三步,如何确认这个数字证书,不是由鲍勃发的?比如现实中的一种情况是,我进行域名劫持,然后我将我的证书发给爱丽丝,然后窃取她的账号密码等。