优化Apache HTTPS性能核心是协同调优协议层:启用TLS 1.3(1-RTT/0-RTT)、精简ECDHE+AEAD密码套件、配置SSLSessionCache与SSLSessionTickets双轨复用、开启OCSP Stapling,缺一不可。

Apache 处理 HTTPS 负载时,性能瓶颈往往不在业务逻辑,而在 TLS 握手开销。优化核心不是“加机器”,而是让每次连接更轻、复用更稳、加密更快。关键在于协议层配置的协同调优。
启用 TLS 1.3 并禁用老旧协议
TLS 1.3 将完整握手从 2-RTT 降至 1-RTT,部分场景支持 0-RTT 恢复,显著降低首字节延迟。Apache 2.4.48+ 原生支持,需确保 OpenSSL 1.1.1 或更高版本。
- 在虚拟主机或全局 SSL 配置中明确指定:SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3
- 避免使用
all简写,防止意外启用不安全旧协议 - 若后端服务(如 Java 应用)不兼容 TLS 1.3,可临时保留 TLS 1.2,但务必禁用 TLS 1.1 及以下
精简加密套件,优先 ECDHE + AEAD
密钥交换和对称加密算法直接影响握手耗时与 CPU 占用。RSA 密钥交换已过时;CBC 模式易受攻击且性能差;AEAD(如 AES-GCM、ChaCha20-Poly1305)兼具安全与效率。
- 推荐配置:SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:TLS_CHACHA20_POLY1305_SHA256
- 禁用所有含
MD5、RC4、DES、CBC的套件(如!aNULL:!MD5:!RC4:!DES:!CBC) - 添加 SSLHonorCipherOrder on,强制服务端优先选择最优套件
强化会话复用:缓存 + 票据双轨并行
完整 TLS 握手消耗远高于会话复用。单一机制有局限:内存缓存(SSLSessionCache)受限于进程/节点;会话票据(SSLSessionTickets)依赖客户端支持与密钥一致性。
- 启用共享缓存:SSLSessionCache shmcb:/var/run/ssl_scache(1048576)(1MB,适合 3000–5000 并发)
- 设合理超时:SSLSessionCacheTimeout 300(5 分钟),兼顾复用率与内存压力
- 开启票据机制:SSLSessionTickets on,并严格配置密钥文件:SSLSessionTicketKeyFile /etc/ssl/private/ticket.key
- 多节点集群必须共用同一份 ticket.key,否则跨机票据失效,退化为全握手
配合 OCSP Stapling 减少证书验证延迟
客户端验证证书有效性时,若需主动查询 OCSP 服务器,可能增加 100–300ms 延迟。Stapling 由 Apache 主动获取并随握手响应下发,规避此开销。
- 启用 stapling:SSLStapling on 和 SSLStaplingVerify on
- 配置可靠 DNS 解析器:SSLStaplingResponderTimeout 5,SSLStaplingCache shmcb:/var/run/stapling_cache(512000)
- 推荐 resolver 使用本地 DNS 或可信公共 DNS(如
8.8.8.8),避免因解析失败导致 stapling 失效


















