温馨提示×

如何在Apache中优化SSL性能

小樊
35
2025-12-28 12:58:02
栏目: 云计算

Apache SSL/TLS 性能优化清单

一 基础准备与模块启用

  • 保持系统与软件为最新版本,安装并启用必要模块:mod_ssl、mod_http2、mod_deflate、mod_headers。在 CentOS/RHEL 可使用:sudo yum install httpd mod_ssl;在 Debian/Ubuntu 可使用:sudo apt install apache2-mod-ssl libapache2-mod-http2。启用模块后重启服务。
  • 使用 TLS 证书链完整(将中间证书与服务器证书合并或正确链配置),减少客户端验证往返。
  • 如架构允许,考虑 SSL/TLS 终止于前置负载均衡/CDN,由专用设备/服务处理加解密,降低源站 CPU 压力。

二 核心 SSL/TLS 配置优化

  • 启用现代协议:优先启用 TLSv1.3,并仅允许 TLSv1.2/1.3,禁用 SSLv2/3、TLSv1.0/1.1
  • 优化密码套件与顺序:启用 ECDHE 以实现 PFS(前向保密),并强制服务器优先选择套件(如:ECDHE-RSA-AES128-GCM-SHA256、ECDHE-RSA-AES256-GCM-SHA384 等),禁用 NULL、MD5、DES、RC4 等弱套件与算法。
  • 会话复用提效:开启 SSLSessionCache(如基于共享内存的 shmcb)并设置合理超时(如 300 秒),减少完整握手次数。
  • 在线证书状态校验加速:启用 OCSP Stapling,配置 SSLStaplingCache,减少客户端向 CA 拉取 OCSP 的往返。
  • 连接层效率:开启 KeepAlive,设置 MaxKeepAliveRequests(如 100)与 KeepAliveTimeout(如 5 秒),复用 TCP/SSL 连接。
  • 内容压缩:启用 mod_deflate 对文本类资源压缩(text/html、text/css、application/javascript 等)。
  • 传输层安全策略:添加 HSTS 头(如:max-age=63072000;includeSubDomains;preload),强制浏览器使用 HTTPS。
  • HTTP/2 多路复用:启用 HTTP/2(Protocols h2 http/1.1),在单连接上并行传输多请求,降低握手与队头阻塞。

三 推荐配置示例

# 仅允许 TLS 1.2/1.3,优先 ECDHE 与 AEAD 套件
SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder    On

# 会话复用
SSLSessionCache         shmcb:/var/run/apache2/ssl_scache(512000)
SSLSessionCacheTimeout  300

# OCSP Stapling
SSLUseStapling          on
SSLStaplingCache       "shmcb:logs/stapling-cache(150000)"
SSLStaplingResponderTimeout 5
SSLStaplingVerify       on

# HTTP/2
Protocols               h2 http/1.1

# 连接与压缩
KeepAlive              On
MaxKeepAliveRequests   100
KeepAliveTimeout       5

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript

说明:路径与模块名可按发行版调整(如 CentOS 的 shmcb 路径可为 /var/run/httpd/ssl_scache)。

四 验证与上线流程

  • 语法与影响评估:变更前执行 apachectl configtest;使用 ab/siege 等工具做基线压测,观察 TPS、握手时延、CPU 变化。
  • 配置核查:使用 openssl s_client -connect yourdomain:443 -tls1_2/1_3 验证协议与套件;在线检测(如 SSL Labs)核对评分与链完整性。
  • 渐进发布:先在灰度/低峰时段启用,逐步扩大范围;持续监控 error.log/access.log 与业务指标。
  • 资源与边界:结合实例规格调整 MaxRequestWorkers/MaxClients 与 KeepAlive 参数,避免连接风暴与内存耗尽。

五 进阶与架构建议

  • 高并发场景优先采用 TLS 终止于负载均衡/CDN,源站仅处理明文 HTTP,显著降低加解密成本。
  • 启用 HTTP/2 Server Push(如业务适合)进一步减少往返;对不支持的客户端自动回退。
  • 若仍受限于 CPU,考虑 SSL 加速卡/硬件加速 或更高性能的实例规格。

0