假设现在CA机构有一套非对称加密的公钥A+ 和 私钥A-(浏览器会预存公钥A+)
目标服务器也有一套非对称加密的公钥B+ 和 私钥B-
1、浏览器向服务器发起请求;
2、目标服务器收到请求,将数字证书返回给浏览器(包括公钥B+ + 数字签名);
3、浏览器收到证书之后,先取到签名,利用浏览器预存的CA机构的公钥A+,对签名进行解密,解密之后得到一份数据摘要(假设叫T),接着利用证书里面提供的Hash算法对明文数据进行Hash,又得到一份数据摘要(假设叫S)。此时,如果 T=S ,那认为这份证书就是有效的。有效则进行下一步,否则直接断开连接;
4、浏览器从证书里面取出目标网站的公钥B+,然后在本地生成一个密钥X,接着利用公钥B+ 对密钥X进行加密,加密之后传输给服务器;
5、服务器收到数据,利用私钥B-对数据进行解密,拿到浏览器生成的密钥X;
6、之后双方的通信,都用密钥X加密之后进行。