优化 Apache HTTPS 握手性能的核心是启用 TLS 1.3、配对原生密钥套件、正确配置 SSLSessionCache 实现高效会话复用,并通过 SSLOpenSSLConfCmd 微调 OpenSSL 底层行为(如优先 X25519 曲线、禁用不安全重协商),同时启用 OCSP Stapling 并严格验证生效。

优化 Apache 的 HTTPS 握手性能,核心是减少 TLS 协商轮次、降低 CPU 开销、提升会话复用率,并避免协议或算法层面的拖累。不是堆参数,而是让每次握手更短、更稳、更少重算。
启用 TLS 1.3 并配对专用密钥套件
TLS 1.3 天然支持 1-RTT 握手,部分场景还能 0-RTT 恢复,显著优于 TLS 1.2。但仅开启协议远远不够:
- 确认 OpenSSL ≥ 1.1.1(推荐 1.1.1w 或 3.0.x),且 Apache 编译时链接的是该版本(
ldd $(which httpd) | grep ssl) - 配置必须显式启用:
SSLProtocol +TLSv1.2 +TLSv1.3,禁用模糊写法如all -TLSv1.1(易误关 TLS 1.2) - 密钥套件只能用 TLS 1.3 原生套件:
SSLCipherSuite TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256,严禁混入ECDHE-RSA-AES128-GCM-SHA256等 TLS 1.2 风格套件
用好 SSLSessionCache 实现高效会话复用
完整握手耗资源,复用已有会话可跳过密钥交换——这是最直接的提速手段,但配置极易出错:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 必须放在主配置顶层(如
httpd.conf),不能写在<VirtualHost>内,否则启动报错 - 只用
shmcb后端:SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(512000);路径需提前创建并授权(chown www-data:www-data /var/cache/apache2) - 必须设超时:
SSLSessionCacheTimeout 300(5 分钟),否则缓存填满后新连接无法插入,复用率归零
微调 OpenSSL 底层行为(Apache ≥ 2.4.11)
SSLOpenSSLConfCmd 能绕过 mod_ssl 封装,直接控制 OpenSSL 行为,对移动客户端和弱网环境效果明显:
- 优先高效曲线:
SSLOpenSSLConfCmd Curves X25519:secp256r1(禁用 secp521r1、sect* 等慢曲线) - 关闭不安全重协商:
SSLOpenSSLConfCmd Options -UnsafeLegacyRenegotiation - 彻底禁用运行时重协商(若业务允许):
SSLOpenSSLConfCmd Options -NoRenegotiation - 配合 OCSP Stapling 使用:
SSLOpenSSLConfCmd SSLStaplingResponderTimeout 3(缩短 OCSP 查询阻塞时间)
配套加固与验证要点
再好的配置不验证等于没配:
- OCSP Stapling 必须启用:
SSLUseStapling on+SSLStaplingCache shmcb:/var/cache/apache2/stapling_cache(128000) - 禁用旧协议与弱套件:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1,搭配SSLCipherSuite high:!aNULL:!MD5:!RC4:!3DES - 验证是否真生效:用
openssl s_client -connect example.com:443 -tls1_3查协议;用-reconnect测试会话复用,输出含Reused, TLSv1.3才算成功


















