Appearance
SSL优化配置
优化SSL配置可以提高HTTPS性能,减少延迟。
SSL会话缓存
基本配置
nginx
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;参数说明
ssl_session_cache
shared:SSL:10m:共享缓存,10MB大小- 可以存储约40000个会话
ssl_session_timeout
- 会话超时时间
- 默认值:5m
ssl_session_tickets
- 会话票据
- 推荐关闭以提高安全性
OCSP Stapling
基本配置
nginx
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;参数说明
ssl_stapling
- 启用OCSP Stapling
- 减少SSL握手时间
ssl_stapling_verify
- 验证OCSP响应
- 提高安全性
ssl_trusted_certificate
- 信任的证书链
- 包含中间证书
resolver
- DNS解析器
- 用于解析OCSP服务器
HTTP/2
启用HTTP/2
nginx
listen 443 ssl http2;HTTP/2优势
- 多路复用
- 头部压缩
- 服务器推送
- 减少延迟
SSL协议和加密套件
推荐配置
nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers '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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;参数说明
ssl_protocols
- 支持的SSL/TLS协议
- 推荐TLSv1.2和TLSv1.3
ssl_ciphers
- 支持的加密套件
- 优先使用ECDHE
ssl_prefer_server_ciphers
- 服务器选择加密套件
- 推荐关闭以使用客户端偏好
完整优化配置
生产环境配置
nginx
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# SSL协议和加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers '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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
# SSL会话缓存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 性能优化
ssl_buffer_size 4k;
# 安全头
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
root /var/www/html;
index index.html;
}性能测试
SSL握手时间测试
bash
openssl s_time -connect example.com:443 -newSSL配置测试
访问 https://www.ssllabs.com/ssltest/ 进行SSL评分
HTTP/2测试
bash
curl -I --http2 https://example.com常见问题
OCSP Stapling不生效
原因: DNS解析器配置错误
解决: 检查resolver配置
nginx
resolver 8.8.8.8 8.8.4.4 valid=300s;SSL握手慢
原因: SSL会话缓存配置错误
解决: 检查ssl_session_cache配置
nginx
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;HTTP/2不生效
原因: 浏览器不支持或配置错误
解决: 检查浏览器支持和配置
nginx
listen 443 ssl http2;总结
SSL优化的关键点:
- 会话缓存:减少SSL握手时间
- OCSP Stapling:提高握手效率
- HTTP/2:提高传输性能
- 协议和加密套件:使用现代协议和加密套件
- 性能测试:定期测试SSL性能
合理优化SSL配置,提高HTTPS性能和用户体验。