HTTPS基于HTTP + SSL/TLS协议栈实现安全通信,核心流程分为握手、数据传输和连接关闭三个阶段。
- 握手阶段:客户端与服务器建立连接,通过一系列交互协商加密参数并验证身份。
- 客户端发起请求:发送支持的TLS版本、加密算法列表、随机数等信息。
- 服务器响应:选择TLS版本和加密算法,返回随机数和数字证书(含公钥)。
- 客户端验证证书:通过操作系统或浏览器内置的根证书验证服务器证书合法性,若验证失败,浏览器会提示“证书不安全”。
- 生成会话密钥:客户端生成预主密钥,用服务器证书中的公钥加密后发送给服务器。双方通过预主密钥和之前的随机数,计算出会话密钥,用于后续数据加密。
- 数据传输阶段:双方使用会话密钥对请求和响应数据进行对称加密(如AES算法),保证传输安全。对称加密加密和解密使用同一密钥,效率高,适合大量数据传输;非对称加密仅在握手阶段用于安全交换会话密钥(公钥加密、私钥解密)。
- 连接关闭阶段:通信结束后,双方释放连接,会话密钥随之失效。
通过上述原理,HTTPS实现了数据在传输过程中的机密性、完整性和身份验证,防止被第三方窃听、篡改或遭受中间人攻击。