HTTPS 实现原理(通俗 + 流程拆解)
HTTPS = HTTP + TLS/SSL,核心是加密传输 + 身份认证 + 数据完整性校验,跑在标准 443 端口(HTTP 默认 80)。
一、核心前置:SSL/TLS 证书
网站必须先向CA 证书机构申请 SSL 证书,证书包含:
- 网站域名、公钥
- CA 机构签名(证明域名合法)
- 有效期、加密算法等服务器私钥由网站自己保管,绝不外泄。
公钥公开分发,私钥仅服务器持有。
二、完整握手流程(简化版)
- 客户端发起请求浏览器访问
https://xxx.com,向服务器发送:支持的 TLS 版本、加密套件、随机数。 - 服务器返回证书服务器选出双方兼容的加密方案,下发 SSL 证书 + 服务器随机数。
客户端校验证书浏览器用CA 根证书验证签名:
- 证书是否可信、域名是否匹配、是否过期 / 被吊销
- 校验失败直接弹出「不安全」警告
- 协商会话密钥(关键加密环节)
- 客户端用服务器公钥加密「预主密钥」,发给服务端
- 服务器用自身私钥解密,拿到预主密钥
- 双方结合各自随机数 + 预主密钥,生成一致的对称会话密钥
- 加密通信正式开始后续所有 HTTP 报文,都用对称会话密钥加解密:
- 对称加密速度快,适合大量网页数据传输
- 同时附带消息摘要,防止数据被篡改
↓
SSL证书:https://www.joyssl.com/certificate/select/free.html?nid=7
↑
三、两种加密分工
- 非对称加密(公钥 / 私钥) :只用来安全协商会话密钥(慢,只做握手)
- 对称加密:传输网页、接口数据(快,全程主力)
四、网站部署 HTTPS 实操步骤
- 域名解析正常,服务器开放 443 端口
- 向 CA 申请 SSL 证书(免费:Let's Encrypt;商业:阿里云 / 腾讯云 / Sectigo 等)
- 把证书文件 + 私钥配置到 Web 服务(Nginx / Apache / Caddy / Tomcat)
- 配置强制跳转:
HTTP 80自动跳转到HTTPS 443 - 可选:配置 HSTS,强制浏览器永远使用 HTTPS
五、补充关键点
- 端口:HTTP=80,HTTPS=443,防火墙 / 安全组必须放行 443
- 证书类型:单域名、多域名、泛域名(通配符),按需选择
- 现代主流协议:TLS 1.2 / TLS 1.3(SSL 3.0 已淘汰,不安全)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。