一 、两对公私钥
1、CA公私钥:
CA公钥:预装在操作系统,内置在浏览器中。
备注:微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认安装在操作系统中,并且设置为操作系统信任的数字证书。
CA私钥:由CA机构保管,不会外泄。
2、服务公私钥:
服务端公钥:属于服务端的公私钥,保存在证书中,属于公开的秘钥。
服务端私钥:私钥服务端保管,不会外泄。
二、证书内容
证书=公钥(服务方生成密码对中的公钥)+申请者与颁发者信息+签名(用CA机构生成的秘钥对的私钥进行签名);
即便有人截取服务器A证书,再发给客户端,想冒充服务器A,也无法实现。因为证书和url的域名是绑定的。
三、交互过程
其中第3步证明证书是由CA机构颁发的有效证书,但是不能确定是该服务端返回的证书(可能在传输中被篡改)。然后校验证书中的证书使用者(服务端)信息--域名,与要请求的目标服务端是否一致。一致才能说明证书不仅是受信任的机构颁发的证书,还说明就是目标服务端的证书。才可以信任证书中的服务端公钥。
再在客户端本地生成随机码(对称秘钥),将随机码用证书中的服务端公钥加密得到随机码的密文,再将请求的应用数据用随机码进行加密(对称加密)。
请求到服务端,服务端用服务端自己的私钥将随机码原文解密出来,再用这个随机码解密请求应用数据得到应用数据的明文(除了服务端其他人无法解密得到随机码)。服务端处理请求后,响应的应用数据使用同样的随机码加密响应数据(对称加密)。
客户端收到响应数据后用之前的随机码解密。
为什么应用数据要用对称加密呢?因为对称加解密的效率远高于非对称加解密。而非对称加解密更加安全,所以用来传输对称加解密的秘钥。
SSL结合了这两种加密算法的优点,通过非对称加密来协商对称加密的密钥,握手成功之后便可使用对称加密来做加密通信,对于RSA来说,客户端是用RSA的公钥把预主密钥加密后传给服务器,服务器再用私钥来解密,双方再通过相同的算法来生成会话密钥,之后的应用层数据就可以通过会话密钥来加密通信。
参考:
《HTTPS安全通信过程 》