启用sslsessiontickets可显著提升移动端重连性能,核心是将加密票据交由客户端保存,服务端解密即可复用会话,避免ip切换时的完整tls握手;需apache≥2.4.8、配置稳定48字节密钥、禁用tls1.1及以下协议,并配合ocsp stapling、http/2等机制协同生效。

优化 Apache 的 SSL 性能对移动用户体验提升效果显著,核心在于减少 TLS 握手耗时、适配移动端高动态网络(如 Wi-Fi/4G 切换、IP 频繁变更),并确保首屏加载快、重连响应稳。
启用并正确配置 SSLSessionTickets
这是针对移动端最关键的优化项。传统会话缓存(SSLSessionCache)在负载均衡或多机部署下极易失效,而 SSLSessionTickets 将加密票据交由客户端保存,服务端只需解密即可复用会话,天然支持 IP 变更场景。
- 确认 Apache 版本 ≥ 2.4.8(推荐 2.4.53+ 或 2.4.61+)
- 在虚拟主机或全局 ssl.conf 中添加:
SSLSessionTickets on
SSLSessionTicketKeyFile /etc/ssl/private/ticket.key - 生成唯一密钥(仅一次):
openssl rand -out /etc/ssl/private/ticket.key 48 - 设置严格权限:
chmod 600 /etc/ssl/private/ticket.key
chown www-data:www-data /etc/ssl/private/ticket.key(用户按实际运行身份调整) - ⚠️ 多节点必须共享同一 ticket.key 文件,否则跨机票据无法解密
强制启用现代协议与强密码套件
老旧协议(TLS 1.0/1.1)不支持 Session Tickets,且握手慢、安全性差;弱密码套件会拖慢协商过程,甚至触发客户端降级重试。
- 禁用不安全协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 - 优先 TLS 1.3,并明确指定高效套件(含 ECDHE + AEAD):
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:避免客户端直连 CA 查询证书状态,减少 RTT
SSLUseStapling on
SSLStaplingCache shmcb:/var/run/ocsp(128000) -
开启 HTTP/2:复用单个 TLS 连接并发请求,降低移动端多资源加载延迟
Protocols h2 http/1.1 -
启用 Keep-Alive:减少 TCP 连接重建开销
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5 -
压缩文本响应:减小传输体积,尤其利于弱网环境
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css application/javascript
验证是否生效
不能只看配置写没写,要实测票据是否真正被客户端使用:
- 用 Chrome DevTools → Security 标签页查看“Connection”中是否显示 “TLS 1.3” 或 “TLS 1.2 (Session resumption)”
- 用 OpenSSL 命令模拟重连:
openssl s_client -connect yoursite.com:443 -reconnect -servername yoursite.com 2>/dev/null | grep "Session-ID"
若两次输出的 Session-ID 不同但握手时间为 0ms 或极短( - 抓包验证 ClientHello 是否携带 session_ticket 扩展(Wireshark 过滤:tls.handshake.extension.type == 35)











