# Configuring Tls 1 3 For Secure Communications

> TLS 1.3（RFC 8446）是传输层安全协议的最新版本，在安全性和性能方面相比 TLS 1.2 有显著改进，将握手延迟降低至 1-RTT，移除了过时的密码套件并强制要求完美前向保密。

- Skill: `killvxk/configuring-tls-1-3-for-secure-communications` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/configuring-tls-1-3-for-secure-communications`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/configuring-tls-1-3-for-secure-communications/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/configuring-tls-1-3-for-secure-communications

---

# 配置 TLS 1.3 实现安全通信

## 概述

TLS 1.3（RFC 8446）是传输层安全协议的最新版本，在安全性和性能方面相比 TLS 1.2 有显著改进。它将握手延迟降低至 1-RTT（会话恢复时为 0-RTT），移除了过时的密码套件，并强制要求完美前向保密（PFS）。本技能涵盖在服务器上配置 TLS 1.3、验证配置以及测试常见错误配置。

## 目标

- 在 nginx 和 Apache Web 服务器上配置 TLS 1.3
- 使用 Python ssl 模块在应用程序中实施 TLS 1.3
- 使用 openssl 和 testssl.sh 验证 TLS 配置
- 了解 TLS 1.3 密码套件和密钥交换机制
- 配置具有适当保护的 0-RTT 早期数据
- 禁用旧版 TLS（1.0、1.1）和弱密码套件

## 核心概念

### TLS 1.3 密码套件

| 密码套件 | 密钥交换 | 认证 | 加密 | 哈希 |
|-------------|-------------|----------------|------------|------|
| TLS_AES_256_GCM_SHA384 | ECDHE/DHE | 证书 | AES-256-GCM | SHA-384 |
| TLS_AES_128_GCM_SHA256 | ECDHE/DHE | 证书 | AES-128-GCM | SHA-256 |
| TLS_CHACHA20_POLY1305_SHA256 | ECDHE/DHE | 证书 | ChaCha20-Poly1305 | SHA-256 |

### TLS 1.3 vs 1.2 改进

- **1-RTT 握手**：完整握手在一个往返内完成（TLS 1.2 需要 2 个）
- **0-RTT 恢复**：恢复连接可立即发送数据
- **无 RSA 密钥交换**：仅使用临时 Diffie-Hellman（强制 PFS）
- **简化密码套件**：移除了 CBC、RC4、3DES、静态 RSA、SHA-1
- **加密握手**：服务器证书在 ServerHello 之后加密传输

### 密钥交换组

- **x25519**：Curve25519 ECDH（首选，速度快）
- **secp256r1**：NIST P-256 ECDH（广泛支持）
- **secp384r1**：NIST P-384 ECDH（更高安全裕度）
- **x448**：Curve448 ECDH（最高安全性）

## 实施步骤

1. 验证 OpenSSL 版本支持 TLS 1.3（1.1.1 及以上）
2. 生成或获取 TLS 证书和私钥
3. 配置服务器使用 TLS 1.3 密码套件
4. 禁用 TLS 1.0 和 1.1（可选保留 1.2 以兼容旧版）
5. 设置首选密钥交换组
6. 启用 OCSP stapling 进行证书验证
7. 使用 openssl s_client 和 testssl.sh 测试配置
8. 配置 HSTS 头部实现 HTTP 严格传输安全

## 安全注意事项

- 0-RTT 数据容易受到重放攻击；限制为幂等请求
- 如需支持旧版客户端，始终包含 TLS 1.2 回退
- 使用 ECDSA 证书获得更好性能（相比 RSA）
- 启用 OCSP stapling 以改进客户端证书验证
- 将 HSTS 头部设置较长的 max-age 并包含 includeSubDomains
- 监控证书透明度日志

## 验证标准

- [ ] TLS 1.3 握手成功完成
- [ ] 仅提供已批准的密码套件
- [ ] 完美前向保密得到执行
- [ ] TLS 1.0 和 1.1 被拒绝
- [ ] OCSP stapling 正常工作
- [ ] 证书链有效且完整
- [ ] testssl.sh 未报告漏洞

