apache mod_ssl优化tls握手性能的核心是启用sslsessiontickets并配稳定密钥,使客户端保存加密票据、服务端解密即复用主密钥,节省1–2个rtt;需满足apache≥2.4.8、openssl≥1.0.1、mod_ssl启用,配合shmcb缓存、180–300秒超时及tls1.2+协议收紧。
apache 的 mod_ssl 优化 tls 握手性能,核心是减少重复计算、缩短连接建立耗时、提升会话复用率。重点不在“禁用加密”,而在于让合法客户端尽可能跳过完整握手(full handshake),改用更轻量的会话复用机制。
启用并正确配置 SSLSessionTickets
这是对移动端和网络不稳定场景最有效的优化:客户端保存加密票据,服务端无需查缓存、不依赖 IP,解密成功即复用主密钥,节省 1–2 个 RTT。
- 确认环境满足硬性条件:Apache ≥ 2.4.8(推荐 2.4.10+)、OpenSSL ≥ 1.0.1(生产建议 ≥ 1.1.1)、mod_ssl 已启用(httpd -M | grep ssl 应输出 ssl_module)
- 生成稳定密钥一次:openssl rand -out /etc/ssl/private/ticket.key 48,设权限 chmod 600 并属主匹配 Apache 运行用户(如 www-data)
- 在 SSL 配置块中显式启用:SSLSessionTickets on 和 SSLSessionTicketKeyFile /etc/ssl/private/ticket.key
- ⚠️ 多机集群必须分发同一份二进制密钥;密钥不可 base64/hex 编码,不可写进配置文件内联
合理设置 SSLSessionCache 与超时
服务端内存级会话缓存,适合同 IP 或固定负载均衡后端的复用场景,与 SessionTickets 形成互补而非替代。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 首选 shmcb 共享内存缓存:SSLSessionCache "shmcb:/var/run/ssl_scache(512000)"(512KB,约存 4000–6000 个会话)
- 超时时间设为 180–300 秒:SSLSessionCacheTimeout 300;设太短(如 60 秒)会导致客户端频繁掉出缓存,实测命中率骤降
- 确保路径存在、Apache 进程有读写权限;并发高时可同步增大缓存尺寸(如 1MB)
收紧协议与密码套件,避免降级 fallback
SSLSessionTickets 仅在 TLS 1.2+ 生效,旧协议会强制走全握手,使所有优化失效。
- 禁用不安全旧协议:SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
- 启用前向保密并优先 TLS 1.3:SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
- 服务端主导协商:SSLHonorCipherOrder on
- 浏览器 DevTools Security 标签页若显示 “obsolete TLS version”,说明协议配置未生效
关闭冗余 SSL 功能,降低运行时开销
某些特性虽曾有用,但现代环境已成负担,关闭后可减少每次请求的 CPU 计算与系统调用。
- 禁用 SSL 压缩:SSLCompression off(CRIME 漏洞风险,且无实际压缩收益)
- 如已启用 SSLSessionCache 且无跨节点漂移需求,可关掉票据:SSLSessionTickets off(节省密钥管理复杂度)
- 禁用不必要的 OCSP Stapling 缓存路径,或确保 SSLStaplingCache 指向有效目录,否则日志报错+握手降级
- 避免在每个 VirtualHost 中重复定义 SSL 参数;统一提取到主配置,用 Include 引入










