什么是TLS?
TLS (传输层安全) 是为计算机网络提供安全通信的密码协议。TLS是SSL (安全套接层) 的后继,是HTTPS连接、安全电子邮件传输 (STARTTLS) 和许多其他加密互联网协议背后的技术。当您在浏览器中看到挂锁图标时,TLS正在工作以加密您的设备和服务器之间的数据。TLS版本历史
| 版本 | 年份 | 状态 |
|---|---|---|
| SSL 2.0 | 1995 | 已弃用,不安全 |
| SSL 3.0 | 1996 | 已弃用,不安全 |
| TLS 1.0 | 1999 | 已弃用 |
| TLS 1.1 | 2006 | 已弃用 |
| TLS 1.2 | 2008 | 当前标准 |
| TLS 1.3 | 2018 | 最新,推荐 |
TLS的工作原理
TLS握手 (TLS 1.2)
客户端 服务器
│ │
├──── ClientHello ─────────────────► │
│ (支持的密码、随机) │
│ │
│ ◄─── ServerHello ──────────────────┤
│ (选定的密码、证书) │
│ │
├──── 密钥交换 ────────────────────► │
│ (加密的预主密钥) │
│ │
│ ◄─── 完成 ─────────────────────────┤
│ │
└──── 加密数据 ◄──────────────────────┘
TLS 1.3改进
- 更少的往返 (更快的握手)
- 移除不安全的密码
- 强制前向保密
- 加密握手消息
TLS组件
证书
- 认证服务器身份
- 由证书颁发机构颁发
- 包含用于加密的公钥
密码套件
定义使用的加密算法:
TLS_AES_256_GCM_SHA384 (TLS 1.3)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
│ │ │ │
│ │ │ └── 哈希算法
│ │ └── 加密算法
│ └── 密钥交换
└── 协议
TLS用途
| 应用 | 协议 | 端口 |
|---|---|---|
| 网页浏览 | HTTPS | 443 |
| 电子邮件 (IMAP) | IMAPS | 993 |
| 电子邮件 (SMTP) | SMTPS | 465 |
| 电子邮件提交 | STARTTLS | 587 |
| FTP | FTPS | 990 |
服务器配置
Nginx TLS配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
最佳实践
1. 使用TLS 1.2或1.3:禁用旧版本
2. 强密码套件:优先选择AEAD密码
3. 启用HSTS:强制TLS连接
4. 证书管理:自动化续期
5. 前向保密:使用ECDHE密钥交换
6. 定期测试:SSL Labs、testssl.sh
测试TLS配置
# OpenSSL测试
openssl s_client -connect example.com:443 -tls1_3
# 检查证书
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text
TLS是安全互联网通信的基础,加密传输中的数据以防止窃听、篡改和中间人攻击。