HTTPS 实现原理(通俗 + 流程拆解)

HTTPS = HTTP + TLS/SSL,核心是加密传输 + 身份认证 + 数据完整性校验,跑在标准 443 端口(HTTP 默认 80)。

一、核心前置:SSL/TLS 证书

网站必须先向CA 证书机构申请 SSL 证书,证书包含:

  1. 网站域名、公钥
  2. CA 机构签名(证明域名合法)
  3. 有效期、加密算法等服务器私钥由网站自己保管,绝不外泄。
公钥公开分发,私钥仅服务器持有。

二、完整握手流程(简化版)

  1. 客户端发起请求浏览器访问 https://xxx.com,向服务器发送:支持的 TLS 版本、加密套件、随机数。
  2. 服务器返回证书服务器选出双方兼容的加密方案,下发 SSL 证书 + 服务器随机数。
  3. 客户端校验证书浏览器用CA 根证书验证签名:

    • 证书是否可信、域名是否匹配、是否过期 / 被吊销
    • 校验失败直接弹出「不安全」警告
  4. 协商会话密钥(关键加密环节)
  • 客户端用服务器公钥加密「预主密钥」,发给服务端
  • 服务器用自身私钥解密,拿到预主密钥
  • 双方结合各自随机数 + 预主密钥,生成一致的对称会话密钥
  1. 加密通信正式开始后续所有 HTTP 报文,都用对称会话密钥加解密:
  • 对称加密速度快,适合大量网页数据传输
  • 同时附带消息摘要,防止数据被篡改

SSL证书https://www.joyssl.com/certificate/select/free.html?nid=7

三、两种加密分工

  • 非对称加密(公钥 / 私钥) :只用来安全协商会话密钥(慢,只做握手)
  • 对称加密:传输网页、接口数据(快,全程主力)

四、网站部署 HTTPS 实操步骤

  1. 域名解析正常,服务器开放 443 端口
  2. 向 CA 申请 SSL 证书(免费:Let's Encrypt;商业:阿里云 / 腾讯云 / Sectigo 等)
  3. 证书文件 + 私钥配置到 Web 服务(Nginx / Apache / Caddy / Tomcat)
  4. 配置强制跳转:HTTP 80 自动跳转到 HTTPS 443
  5. 可选:配置 HSTS,强制浏览器永远使用 HTTPS

五、补充关键点

  • 端口:HTTP=80,HTTPS=443,防火墙 / 安全组必须放行 443
  • 证书类型:单域名、多域名、泛域名(通配符),按需选择
  • 现代主流协议:TLS 1.2 / TLS 1.3(SSL 3.0 已淘汰,不安全)