https = http + SSL(安全套接字)/TSL(传输层安全协议)
具体流程:
1. 客户端发出请求(https:xxx.com)
// 非对称秘钥加密阶段
2. 服务器端发送数字证书(包含公钥)
3. 客户端用内置的CA列表验证证书(如有问题,则提示风险)
4. 客户端生成随机的对称秘钥,并用服务器的公钥加密
5. 服务器用私钥解密,拿到客户端的随机对称秘钥
// 对称秘钥加密阶段
6. 双方都知道对称秘钥,用它来加密通信
数字证书的生成?
数字证书 = 数字签名 + 服务器公钥(以及其他信息)
数字签名:CA机构用私钥对 消息摘要 进行加密
消息摘要:服务器公钥(以及其他信息)通过 Hash算法生成消息摘要
客户端如何验证数字证书?
1. 使用Hash对 服务器公钥(以及其他信息)计算得到消息摘要
2. 使用内置的CA公钥对 数字签名 进行解密 得到消息摘要
3. 对比两份消息摘要是否相同