术语表

HTTPS (HTTP over TLS)

最后核实

定义

HTTPS 是在 TLS 加密连接之上传输的 HTTP,默认使用 443 端口,使网页内容、Cookie 和表单数据被加密,并验证服务器身份。

HTTPS 并不是一种独立的新协议:浏览器先与服务器建立 TLS 连接,按访问的域名校验服务器证书,然后在加密通道里照常收发 HTTP 报文。https:// 这个 URL 协议头告诉客户端要这样做,默认端口是 443。HTTP/1.1 和 HTTP/2 的 HTTPS 跑在 TCP 上,HTTP/3 则基于 QUIC,把 TLS 1.3 内置在传输层中。

为什么重要

主流浏览器会把纯 HTTP 页面标记为“不安全”,Service Worker、地理定位等能力也只在安全上下文中开放,浏览器里的 HTTP/2 同样只走 TLS。HTTPS 还能阻止链路上的运营商或中间设备窥探和注入内容,例如过去常见的页面劫持广告。上线 HTTPS 后还应做两件事:把所有 HTTP 请求 301 跳转到 HTTPS,并下发 HSTS 响应头,让浏览器以后不再尝试明文访问;同时清理页面中的 混合内容,否则 http:// 引入的脚本会被浏览器拦截。

例子

宝塔面板的“强制 HTTPS”开关作用与此类似,手写 nginx 配置如下:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

常见误区

  • 有小锁就说明网站安全可信。 小锁只表示连接已加密、对方持有该域名的证书,钓鱼网站同样可以用 HTTPS。
  • 启用 HTTPS 需要先做 ICP 备案。 ICP 备案是国内网站服务的监管要求,和 HTTPS 本身无关;DV 证书签发只校验域名控制权。
  • HTTPS 会让网站明显变慢。 在 TLS 1.3、会话恢复和 HTTP/2、HTTP/3 的配合下,额外开销通常可以忽略。

延伸阅读