优化Apache SSL性能的关键步骤
确保系统和Apache版本为最新,新版本通常包含SSL性能改进(如更高效的加密算法)和安全修复。使用以下命令更新:
sudo apt update && sudo apt upgrade
/etc/apache2/sites-available/default-ssl.conf)中添加:SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4:!3DES
SSLHonorCipherOrder on # 强制服务器优先使用客户端支持的套件
SSLSessionCache shmcb:/var/run/ssl-sessions(512000)
SSLSessionCacheTimeout 300
SSLSessionTickets on
OCSP Stapling让服务器主动获取证书状态(而非客户端查询),减少客户端握手延迟。配置缓存大小(如128KB):
SSLUseStapling on
SSLStaplingCache "shmcb:/var/run/ocsp-stapling-cache(128000)"
HTTP/2的多路复用特性可提升并发请求性能。在SSL配置中添加协议支持:
Protocols h2 http/1.1
优化内核网络设置,提升高并发下的连接处理能力:
# 增加最大连接数和端口范围
echo "net.core.somaxconn = 65535" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65535" | sudo tee -a /etc/sysctl.conf
# 启用TCP连接复用
echo "net.ipv4.tcp_tw_reuse = 1" | sudo tee -a /etc/sysctl.conf
# 减少TIME_WAIT状态超时
echo "net.ipv4.tcp_fin_timeout = 30" | sudo tee -a /etc/sysctl.conf
# 应用更改
sudo sysctl -p
根据服务器资源调整Apache的工作进程和线程数(以prefork模块为例,若使用worker/event模块需相应修改):
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
ServerLimit 256
MaxRequestWorkers 256
MaxConnectionsPerChild 1000
</IfModule>
减少TCP连接建立/关闭的开销,提升后续请求的响应速度。配置:
KeepAlive On
MaxKeepAliveRequests 100 # 单个连接的最大请求数
KeepAliveTimeout 5 # 连接保持时间(秒)
压缩文本内容(HTML/CSS/JS),减少传输数据量(注意:避免压缩图片等二进制文件)。配置:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
SetEnvIf Request_URI \.(gif|jpg|png|zip|gz|bz2)$ no-gzip dont-vary
</IfModule>
使用Let’s Encrypt获取免费证书,简化配置流程:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
定期检查Apache日志(/var/log/apache2/error.log、/var/log/apache2/access.log)和性能指标(如CPU使用率、内存占用),使用工具(如openssl s_client、nmap)分析SSL握手时间,根据实际情况调整配置。
通过以上步骤,可显著提升Apache服务器的SSL性能,同时保持高安全性。优化过程中需在测试环境验证配置,避免直接影响生产环境。