# TLS 1.2（传输层安全协议 1.2）是什么？

> TLS 1.2 是 2008 年由 RFC 5246 定义的 TLS 版本，引入了基于 SHA-256 的密钥派生和 AES-GCM 等 AEAD 加密算法，至今仍被广泛使用。

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

TLS 1.2 是 TLS 的第三个版本，2008 年由 RFC 5246 定义。它把固定的 MD5/SHA-1 伪随机函数换成由密码套件指定哈希（通常是 SHA-256）的版本，新增 signature_algorithms 扩展让双方协商签名和哈希算法，并支持 AES-GCM 等 [AEAD](https://ssl.sh/zh/glossary/aead/) 密码套件。完整握手需要两个往返才能开始传输应用数据。

## 为什么重要
TLS 1.2 和 [TLS 1.3](https://ssl.sh/zh/glossary/tls-1-3/) 是当前浏览器仅接受的两个版本，而且很多客户端仍然离不开它：较老的 Android 和 Java 版本、各类嵌入式设备、部分支付和工控终端都可能不支持 TLS 1.3。与 TLS 1.3 不同，TLS 1.2 的安全性高度依赖配置：同一个协议既能协商出 [ECDHE](https://ssl.sh/zh/glossary/ecdhe/) + AES-GCM 这样的强套件，也能协商出 RSA 密钥传输 + CBC、没有前向保密的弱套件。

## 例子
只保留具备前向保密的 AEAD 套件（均为真实 OpenSSL 名称）：

```nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
```

在基于 OpenSSL 的服务器里，ssl_ciphers 只管 TLS 1.2 及以下，TLS 1.3 的套件要单独配置。宝塔面板或网上抄来的配置常常带着 3DES、CBC 套件，值得逐个核对。

## 常见误区
- **TLS 1.2 已经过时，应该关掉。** 它并未被废弃，配合 ECDHE 和 AEAD 套件依然安全；贸然关闭会让不支持 TLS 1.3 的客户端无法访问。
- **开了 TLS 1.2 就够了。** 密码套件列表同样关键，不主动删除的话，RSA 密钥交换、CBC-SHA1、3DES 套件在 TLS 1.2 下仍可能被协商出来。
- **TLS 1.2 很慢。** 完整握手确实多一个往返，但会话恢复和连接复用能抵消大部分开销。

## 相关术语

- [TLS](https://ssl.sh/zh/glossary/tls/): TLS 是 IETF 制定的传输层安全协议，为 HTTPS 等网络连接提供加密、完整性保护和服务器身份认证，是 SSL 的继任者。
- [TLS 1.3](https://ssl.sh/zh/glossary/tls-1-3/): TLS 1.3 是当前最新的传输层安全协议版本（2018 年的 RFC 8446，现行规范为 RFC 9846），完整握手只需一个往返，且只保留 AEAD 加密算法。
- [密码套件](https://ssl.sh/zh/glossary/cipher-suite/): 密码套件是 TLS 客户端和服务器协商使用的一组命名的加密算法组合，例如 TLS_AES_128_GCM_SHA256，决定连接用什么算法保护数据。
- [AEAD](https://ssl.sh/zh/glossary/aead/): AEAD 是带关联数据的认证加密算法，一次运算同时完成数据加密和完整性认证，并能保护不加密的附加数据不被篡改。
- [ECDHE](https://ssl.sh/zh/glossary/ecdhe/): ECDHE 是椭圆曲线上的临时 Diffie-Hellman 密钥交换，TLS 双方每次握手都生成新的椭圆曲线密钥对，并据此协商出共享密钥。
- [前向保密](https://ssl.sh/zh/glossary/forward-secrecy/): 前向保密是密钥交换的一种安全属性：即使服务器的长期私钥日后泄露，过去连接的会话密钥也不会因此暴露。
- [TLS 握手](https://ssl.sh/zh/glossary/tls-handshake/): TLS 握手是 TLS 连接开始时的一组消息交换，客户端与服务器在其中协商协议版本和密码套件、验证服务器身份并派生会话密钥。
