HTTPS与SSL/TLS配置
HTTPS 是现代 Web 服务的基础。正确的 SSL/TLS 配置可防止中间人攻击和数据窃听。
基础 HTTPS 配置
证书配置
nginx
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
root /var/www/html;
}
http2参数启用 HTTP/2 协议,与 SSL 结合可显著提升性能。证书推荐使用 Let's Encrypt 自动管理。
协议与加密套件
限制 TLS 版本
nginx
server {
# 仅允许 TLS 1.2 和 1.3
ssl_protocols TLSv1.2 TLSv1.3;
# 禁用不安全的 SSL 会话压缩
ssl_session_tickets off;
}
TLS 1.0 和 1.1 已被各大标准组织废弃,存在已知漏洞。生产环境应仅启用 1.2+。
加密套件选择
nginx
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_prefer_server_ciphers on让服务器决定加密套件优先级,防止客户端降级攻击。优先使用 ECDHE(前向安全)+ GCM(认证加密)。
SSL 会话优化
会话缓存
nginx
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
shared类型可在 worker 进程间共享,10m约可存储 40000 个会话。避免使用builtin类型。
OCSP Stapling
nginx
server {
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;
}
OCSP Stapling 由服务器代替客户端向 CA 查询证书状态,减少连接延迟和隐私泄露。
HTTP 严格传输安全 (HSTS)
nginx
server {
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
}
max-age浏览器记住 HTTPS 的时间(秒),建议 2 年includeSubDomains应用到所有子域名preload允许提交到浏览器预加载列表
HSTS 必须在 HTTPS 响应中设置。首次访问仍可能被劫持,建议将域名加入 HSTS Preload List。
HTTP 到 HTTPS 重定向
nginx
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
# SSL 配置...
}
301 永久重定向,浏览器会缓存跳转行为。
$host保持原始 Host 头,$request_uri保持完整路径和参数。
双向 TLS 认证 (mTLS)
nginx
server {
listen 443 ssl;
ssl_client_certificate /etc/nginx/ssl/ca.pem;
ssl_verify_client optional;
location /api/ {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
proxy_pass http://backend;
}
}
mTLS 要求客户端提供有效证书,适用于 API 间通信或内部服务认证。
optional模式可在特定 location 强制验证。
要点总结
- 仅允许 TLS 1.2+,禁用 SSLv3/TLS1.0/TLS1.1
- 使用 ECDHE + GCM 加密套件,启用前向安全
- 配置
ssl_session_cache shared实现跨 worker 会话共享 - 启用 OCSP Stapling 减少证书验证延迟
- 设置 HSTS 头强制浏览器使用 HTTPS
- HTTP 流量 301 重定向到 HTTPS
- 内部服务可使用 mTLS 实现双向认证
📝 发现内容有误?点击此处直接编辑