# HTTPS（HTTP over TLS）是什么？

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

Source: https://ssl.sh/zh/glossary/https/
Last updated: 2026-11-10

HTTPS 并不是一种独立的新协议：浏览器先与服务器建立 [TLS](https://ssl.sh/zh/glossary/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](https://ssl.sh/zh/glossary/hsts/) 响应头，让浏览器以后不再尝试明文访问；同时清理页面中的 [混合内容](https://ssl.sh/zh/glossary/mixed-content/)，否则 `http://` 引入的脚本会被浏览器拦截。

## 例子
宝塔面板的“强制 HTTPS”开关作用与此类似，手写 nginx 配置如下：

```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 的配合下，额外开销通常可以忽略。

## 相关术语

- [TLS](https://ssl.sh/zh/glossary/tls/): TLS 是 IETF 制定的传输层安全协议，为 HTTPS 等网络连接提供加密、完整性保护和服务器身份认证，是 SSL 的继任者。
- [SSL 证书](https://ssl.sh/zh/glossary/ssl-certificate/): SSL 证书是由 CA 签名的 X.509 证书，把公钥与一个或多个域名（或 IP 地址）绑定，供 TLS 客户端验证服务器身份。
- [HSTS](https://ssl.sh/zh/glossary/hsts/): HSTS 是一个 HTTP 响应头，告诉浏览器在指定时间内只通过 HTTPS 访问该站点，并且遇到证书错误时不允许用户继续访问。
- [混合内容](https://ssl.sh/zh/glossary/mixed-content/): 混合内容是指通过 HTTPS 加载的页面中，部分脚本、图片、iframe 等子资源仍通过明文 HTTP 加载，削弱了整个页面的安全性。
- [SNI](https://ssl.sh/zh/glossary/sni/): SNI 是 TLS 的一个扩展，客户端在 ClientHello 中写明要访问的域名，使同一个 IP 能为多个 HTTPS 站点分别返回各自的证书。
- [SSL 剥离](https://ssl.sh/zh/glossary/ssl-stripping/): SSL 剥离是一种中间人攻击，攻击者截获本应把用户引向 HTTPS 的跳转或链接，让用户一直停留在明文 HTTP 上。
