优化Apache SSL握手延迟核心是减少完整握手频次、加快密钥运算、降低网络往返开销,需启用TLS 1.3(1-RTT)、配置SSLSessionCache复用会话(耗时降至1–3ms)、开启OCSP Stapling避免客户端额外查询、精简密码套件优先ECDHE以提升性能并支持前向保密。

优化 Apache 的 SSL 握手延迟,核心是减少完整握手频次、加快密钥运算、降低网络往返开销。重点不在“配全”,而在“配准”——每项配置必须生效、协同、可验证。
启用 TLS 1.3 并禁用老旧协议
TLS 1.3 将握手压缩至 1-RTT(甚至 0-RTT),比 TLS 1.2 快 30%–50%。它移除了不安全的算法协商阶段,天然规避了多次往返。
- 确认环境:Apache ≥ 2.4.37 + OpenSSL ≥ 1.1.1(运行 openssl version 和 httpd -v 验证)
- 在全局 ssl.conf 中设置:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2 +TLSv1.3 - 避免混用:禁用 TLSv1.2 后,确保客户端(如旧版 Android WebView 或 Java 8 默认 HttpClient)仍能降级兼容——若需兼顾,保留 TLSv1.2 但优先协商 TLSv1.3
正确配置 SSLSessionCache 实现会话复用
这是对短连接、API 类服务最立竿见影的优化。复用成功时,握手耗时可从 10–30ms 降至 1–3ms。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 必须写在主配置顶层(不能放在
<VirtualHost>内),例如 httpd.conf 或 mods-enabled/ssl.conf 开头 - 强制使用 shmcb 后端:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(512000)
路径需提前创建并授权:
mkdir -p /var/cache/apache2 && chown www-data:www-data /var/cache/apache2 - 必须搭配超时设置:
SSLSessionCacheTimeout 300(5 分钟,与主流客户端行为对齐) - 验证是否生效:
openssl s_client -connect example.com:443 -reconnect -servername example.com 2>/dev/null | grep "Session-ID"
若第二行出现 Reused, TLSv1.3,即表示复用成功
开启 OCSP Stapling 减少证书验证延迟
传统方式下,客户端需额外发起 OCSP 查询验证证书吊销状态,平均增加 100–300ms 延迟。Stapling 让 Apache 主动缓存并内联响应,一次完成。
- 启用并配置缓存:
SSLUseStapling on
SSLStaplingCache shmcb:/var/cache/apache2/ocsp-stapling-cache(128000) - 确保证书支持 OCSP(多数主流 CA 签发的证书默认支持);可用 openssl x509 -in cert.pem -noout -text | grep OCSP 检查
- 上线后观察日志:grep "stapling" /var/log/apache2/ssl_engine_log 应有 stapling response OK 类记录
精简密码套件并启用前向保密
密钥交换算法直接影响握手 CPU 开销。RSA 密钥交换需服务端解密,ECDHE 则仅做签名,性能高且支持前向保密。
- 推荐配置(兼顾安全与性能):
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 - 禁用低效组合:
!aNULL !eNULL !EXPORT !DES !RC4 !MD5 !PSK !SRP !CAMELLIA - 若使用 ECDSA 证书,优先选 ECDHE-ECDSA 套件,比 RSA 套件快约 2–3 倍

















