SSLOpenSSLConfCmd 不能直接禁用某版本会话恢复,但可通过 Options 禁用不安全的 UnsafeLegacyRenegotiation 和 SessionTicket 机制,配合 ExtendedMasterSecret 提升 TLS 1.2 安全性。

SSLOpenSSLConfCmd 本身不直接提供“禁用某版本会话恢复”的独立开关,但它能通过 OpenSSL 底层配置项精准控制会话恢复行为,尤其是针对 TLS 1.2 及更早版本中不安全的会话重协商(legacy renegotiation)和会话票据(session tickets)机制。真正要禁用的是这些具体实现方式,而非笼统的“某版本会话恢复”。
明确目标:禁用不安全的会话恢复机制
Apache 的 SSL/TLS 会话恢复主要依赖两种方式:
- Session ID 复用(TLS 1.2 及之前):由服务器维护会话缓存(如 shmcb),客户端携带 session_id 尝试复用。该机制本身可控,但若配合不安全的重协商,风险陡增。
- Session Tickets(RFC 5077):客户端保存加密票据,下次连接时提交。若票据密钥长期不变或未轮换,可能被解密回溯会话。
SSLOpenSSLConfCmd 不用于关闭 Session ID 缓存(那是 SSLSessionCache 和 SSLSessionCacheTimeout 的职责),而是用于关闭易受攻击的重协商和票据协商行为。
关键配置:用 Options 禁用 UnsafeLegacyRenegotiation
TLS 1.2 及更早版本中,未认证的重协商(legacy renegotiation)是中间人攻击(如 CVE-2009-3555)的根源。OpenSSL 提供了 -UnsafeLegacyRenegotiation 标志来彻底禁用它——这是最直接、最有效的加固手段。
- 在
<virtualhost></virtualhost>或服务器级配置中添加:
注意:
– 必须带减号(-),表示“关闭”;
– 拼写必须完全一致,大小写敏感;
– 该指令仅在 Apache 2.4.11+ + OpenSSL 1.0.2+ 环境下生效,旧版会静默忽略。
补充加固:禁用 Session Tickets(可选)
若你不需要或不信任服务端票据密钥管理能力,可一并禁用 Session Tickets 协商:
- 添加以下指令(同样在
<virtualhost></virtualhost>内):
说明:-SessionTicket 直接禁用票据协商流程;-ExtendedMasterSecret 是 TLS 1.2 的扩展,可缓解重协商攻击,建议与 -UnsafeLegacyRenegotiation 同时启用;
两者叠加后,客户端只能使用 Session ID 方式恢复(且前提是重协商已被禁,Session ID 恢复本身是安全的)。
验证是否生效
配置完成后务必验证:
- 运行
httpd -t确保语法无误; - 重启 Apache;
- 用
openssl s_client -connect yoursite:443 -tls1_2连接,观察输出中是否含Secure Renegotiation IS NOT supported; - 用
openssl s_client -connect yoursite:443 -reconnect测试重连,确认不出现RENEGOTIATING提示。
禁用这些机制不会影响 TLS 1.3 的 PSK 恢复(它是加密安全的),也不会降低性能——现代浏览器普遍支持 0-RTT 或快速 Session ID 复用,安全性与效率兼顾。


















