apache中启用tls会话恢复需配置session id缓存或session tickets:前者用sslsessioncache指定共享内存路径与超时,后者需生成48字节密钥并全局/集群统一部署,同时禁用tls 1.0/1.1、启用ocsp stapling以保障兼容性与性能。

在 Apache 中启用 TLS 会话恢复,核心是让客户端能复用已有会话,跳过完整握手,从而降低延迟、减轻服务器 CPU 压力。它主要通过两种机制实现:Session ID(服务端缓存)和 Session Tickets(客户端存储加密票据)。两者可共存,也可按需选择其一。
启用 Session ID 恢复(传统方式)
这是最基础、兼容性最好的方式,依赖 Apache 在服务端维护共享会话缓存。
- 确保已加载
ssl_module(通常默认启用) - 在
<virtualhost></virtualhost>或全局 SSL 配置中添加:
SSLSessionCacheTimeout 300
说明:
– shmcb 表示使用共享内存 + cyclic buffer 缓存,路径需 Apache 进程有读写权限;
– (512000) 是缓存大小(字节),建议至少 512KB;
– 300 表示会话有效期为 300 秒(5 分钟),超时后强制重新握手。
启用 Session Tickets 恢复(推荐用于 TLS 1.2+ 和集群环境)
该方式不依赖服务端缓存,更适合负载均衡或多节点部署,但需额外生成并安全保管票据密钥。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 生成 256 位随机票据密钥文件(仅需一次):
– 权限设为 600,属主为 Apache 运行用户(如 www-data 或 apache);
- 在虚拟主机配置中启用票据功能:
SSLSessionTicketKeyFile /etc/ssl/private/ticket.key
注意:
– Apache 2.4.12+ 才支持 SSLSessionTicketKeyFile;
– 若使用多个 Apache 实例(如集群),所有节点必须使用**同一份票据密钥文件**,否则票据无法解密,恢复失效。
配合协议与性能优化
会话恢复效果受 TLS 协议版本和密码套件影响,建议同步优化:
- 明确启用现代协议(禁用老旧不安全版本):
- 设置合理密码套件(优先含
EECDH或ECDHE的前向安全套件):
- 开启 OCSP Stapling(提升证书验证效率,间接辅助快速恢复):
SSLStaplingCache "shmcb:/var/run/apache2/stapling_cache(128000)"
验证是否生效
配置完成后重启 Apache,并用以下方式确认:
- 使用
openssl s_client -connect yourdomain.com:443 -reconnect,观察输出中是否有Reused, SSL_SESSION_reused=1 - 用浏览器开发者工具 → Security 标签页,查看“Connection”信息中是否显示 “Reused session”
- 检查 Apache 错误日志,确认无
SSLSessionCache路径权限或密钥文件读取失败报错










