Apache对动态请求的SSL握手优化核心是减少完整握手频次、压缩单次耗时、避免阻塞,关键措施包括:全局配置SSLSessionCache shmcb缓存并设超时,启用TLS 1.3与精简密钥套件,开启OCSP Stapling,配合KeepAlive及系统级连接调优。

确保会话复用真正生效
这是对动态请求最直接有效的优化。每次新握手要耗费 10–30ms CPU(含非对称运算),而复用会话仅需 1–3ms。
- 必须在全局配置(不是 VirtualHost 内)启用 shmcb 缓存:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(512000) - 配套设置老化时间:
SSLSessionCacheTimeout 300(5 分钟,匹配主流客户端行为) - 路径需提前创建并授权:
mkdir -p /var/cache/apache2 && chown www-data:www-data /var/cache/apache2 - 验证是否复用:用
openssl s_client -connect example.com:443 -reconnect -servername example.com连两次,看输出中是否有 Reused, TLSv1.3
升级协议并精简密码套件
动态请求常由浏览器、移动端或脚本发起,它们普遍支持 TLS 1.3;启用后可将握手从 2-RTT 降至 1-RTT,甚至 0-RTT(对 GET 类幂等请求)。
- 只允许现代协议:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3 - 优先 ECDHE 密钥交换(前向保密)+ AES-GCM 加密(硬件加速友好):
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384 - 强制服务器选择顺序:
SSLHonorCipherOrder on
启用 OCSP Stapling 减少验证延迟
动态请求响应快,但若客户端需额外查询证书吊销状态(OCSP),可能增加 100ms+ 网络等待。Apache 主动获取并缓存该响应,随证书一起下发。
- 开启 stapling:
SSLUseStapling on - 配置独立缓存(避免与会话缓存争抢 shmcb):
SSLStaplingCache shmcb:/var/cache/apache2/stapling_cache(128000) - 确保域名 DNS 可达且 CA 支持 OCSP(多数主流证书已支持)
配合连接层与系统级调优
动态请求易产生大量短连接,光靠 TLS 优化不够,需协同降低整体连接建立成本。
- 启用 KeepAlive 并合理设置:
KeepAlive On<br>MaxKeepAliveRequests 100<br>KeepAliveTimeout 5
- 增大内核连接队列:
在/etc/sysctl.conf中添加:net.core.somaxconn = 65535<br>net.ipv4.tcp_max_syn_backlog = 65535
- 提升 Apache 文件描述符上限(防高并发下 “Too many open files”):
在/etc/security/limits.conf中为 www-data 设置:www-data soft nofile 65536<br>www-data hard nofile 65536


















