HTTPS原理
HTTPS通信的流程图如下:
1. 客户端会生成一个客户端随机数,将客户端随机数、支持的加密套件发送给服务器;
2. 服务器也会生成一个随机数,将服务端随机数、证书发送给客户端;
3. 客户端生成一个预主秘钥,通过从证书中解析出服务器公钥加密后传输给服务器,服务器利用自己的私钥进行解密,拿到预主秘钥;
4. 客户端和服务器用相同的加密套件,同时对客户端随机数、服务端随机数和预主秘钥这3个随机数进行算法操作生成主秘钥,由于预主秘钥只有客户端和服务器端知道,因此最终的主秘钥是中间人无法破解的。
数字证书的原理
数字证书是指CA机构发行的一种电子文档,是一串能够表明网络用户身份信息的数字,提供了一种在计算机网络上验证网络用户身份的方式。数字证书的组成如下:
当客户端收到数字证书后,会使用CA的公钥对数字证书中的数字签名进行解密,得到信息摘要,然后对数字证书中服务器的公钥和个人信息进行Hash生成另外一份信息摘要,把两份信息摘要进行对比,从而证实数字证书确实来自想要访问的服务器。