前言
网站如何支持https协议访问
一、对称加密
缺陷
数据发送和和接收方加密解密公用同1个会话秘钥,在公开网络中进行秘钥交互,中间容易被泄露和截获。
二、非对称加密
公钥私钥对加密
缺陷
私钥虽然不容易泄露但是,公钥信息容易被伪造,造成中间人攻击。
三、证书
1.证书结构
网站证书解决了网站身份识别的问题,避免了中间人攻击。
┌───────────────┐ ┌───────────────┐ │ 客户端 │ │ 服务器 │ └───────┬───────┘ └───────┬───────┘ │ 1. Client Hello │ │ - TLS版本 │ │ - 加密套件列表 │ │ - 客户端随机数 │ ├───────────────────────────────────────────>│ │ │ │ 2. Server Hello │ │ - 选定加密套件 │ │ - 服务器随机数 │ │ 3. Certificate │ │ - 证书链 │ │ 4. Server Key Exchange │ (ECDHE参数) │ │ 5. Server Hello Done │<──────────────────────────────────────────--┤ │ │ │ 6. 验证证书内容完整性+是否由权威CA签发真实性 │ │ - 客户端基于证书内容计算出指纹 │ │ - 客户端使用操作系统内置的CA机构的公钥解密证书的数字签名 │ │ - 对比客户端计算指纹和证书中记录的数字签名是否一致│ │ │ │ 7. Client Key Exchange │ │ - 预主密钥 (RSA加密或DH参数) │ ├───────────────────────────────────────────>│ │ │ │ 8. 生成会话密钥【三要素】 │11. 生成相同会话密钥 │ • 客户端随机数 │ • 客户端随机数 │ • 服务器随机数 │ • 服务器随机数 │ • 预主密钥 │ • 预主密钥 │ │ │ 9. Change Cipher Spec │ ├───────────────────────────────────────────>│ │10. Finished (加密的握手摘要) │ ├───────────────────────────────────────────>│ │ │12. Change Cipher Spec │ │<─────────────────────┤ │ │13. Finished │ │<───────────────────────────────────────────┤ │ │ │14. 加密HTTP请求 │ │ (使用会话密钥) │ ├───────────────────────────────────────────>│ │ │15. 加密HTTP响应 │ │<───────────────────────────────────────────┤
优势
证书由权威机构颁发并包含了网站服务器的公钥信息
服务端公钥内置在操作系统内不容易被伪造