# SSL 卸载是什么？定义、例子与常见误区

> SSL 卸载是把 TLS 握手和加解密的计算工作从应用服务器转移到专门的代理、负载均衡或硬件设备上。

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

SSL 卸载是“在应用前面终止 TLS”背后的性能与运维动机。由一个专门组件负责握手、持有证书并完成加解密，应用服务器只处理 HTTP；这个组件可以是负载均衡、应用交付控制器（ADC）、反向代理，或配有加密加速卡、[HSM](https://ssl.sh/zh/glossary/hsm/) 的服务器。常见两种做法：纯卸载，代理到后端走明文；SSL 桥接（重新加密），代理解密后做检查或路由，再与后端新建一条 TLS 连接。

## 为什么重要
TLS 中开销大的是每次握手里的公钥运算；在支持 AES 硬件指令的 CPU 上，[AES-GCM](https://ssl.sh/zh/glossary/aes-gcm/) 批量加密的成本很低，[ECDSA](https://ssl.sh/zh/glossary/ecdsa/) 证书的握手也比 RSA 更省。所以在现代硬件上，卸载的收益往往不在于省 CPU，而在于把证书、续签、协议版本和密码套件策略集中到一处管理。代价是那段明文链路：纯卸载只适合可信且隔离的内网；有合规要求、共享的云上网络或零信任架构，一般要求桥接。做桥接时，代理必须校验后端证书，否则第二段同样可能被截获。在云上用负载均衡卸载 HTTPS 时，也要留意后端协议选的是 HTTP 还是 HTTPS。

## 例子
Nginx 做桥接。Nginx 默认不校验上游证书，需要显式开启：

```nginx
location / {
    proxy_pass https://backend.internal:8443;
    proxy_ssl_server_name on;
    proxy_ssl_name backend.internal;
    proxy_ssl_verify on;
    proxy_ssl_trusted_certificate /etc/nginx/internal-ca.pem;
}
```

纯卸载则改成 `proxy_pass http://10.0.0.11:8080;`，去掉上游 TLS 相关配置。

## 常见误区
- **TLS 太耗资源，应用服务器扛不住，必须卸载。** 有 AES 硬件指令和 ECDSA 证书时，现代服务器上的开销通常不大，应按架构和证书管理需要来决定。
- **写了 `proxy_pass https://` 后端就经过认证了。** Nginx 只是加密了这一段，不设置 `proxy_ssl_verify on` 就不会校验证书。
- **SSL 卸载和 TLS 终止是一回事。** [TLS 终止](https://ssl.sh/zh/glossary/tls-termination/)说的是客户端 TLS 在哪里结束；卸载是把这项工作交给专门基础设施的决定，可以重新加密，也可以不加密。

## 相关术语

- [TLS 终止](https://ssl.sh/zh/glossary/tls-termination/): TLS 终止是指网络路径上客户端 TLS 连接结束并被解密的位置，可以是 CDN 边缘、负载均衡、反向代理，也可以是应用服务器本身。
- [反向代理](https://ssl.sh/zh/glossary/reverse-proxy/): 反向代理是代表后端服务器接收客户端连接、再把请求转发给后端的服务器，通常同时承担 TLS 终止。
- [HSM](https://ssl.sh/zh/glossary/hsm/): HSM 是一种防篡改的硬件设备，在内部生成、保存并使用密钥，私钥不会以明文形式离开设备。
- [ECDSA](https://ssl.sh/zh/glossary/ecdsa/): ECDSA 是基于椭圆曲线的数字签名算法，在 TLS 证书中作为 RSA 的替代方案，密钥和签名更小、签名运算更快。
- [AES-GCM](https://ssl.sh/zh/glossary/aes-gcm/): AES-GCM 是以伽罗瓦/计数器模式运行的 AES 分组密码，属于 AEAD 算法，用计数器模式加密、用 GHASH 认证标签保证完整性。
- [私有 CA](https://ssl.sh/zh/glossary/private-ca/): 私有 CA 是企业为自己的系统和设备搭建的证书颁发机构，其根证书只在企业主动安装的设备上受信任。
