获取域名 SSL 证书只是网络安全等第一步。要让您的服务器既安全又快速的传递信息,还需要针对 Nginx 进行精细化配置。
1. SSL证书基础路径配置
将您在 CertificateHub 申请并下载的证书上传至服务器对应目录,如 /etc/nginx/ssl/ 目录下,并添加证书文件路径配置。
server {
listen 443 ssl;
server_name example.com;
# 证书文件路径
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
}
2. 开启 TLS 1.2 和 TLS 1.3 协议
TLS 1.2/TLS 1.3 移除了过时的加密算法,握手速度提升了 40% 以上。
server {
listen 443 ssl;
server_name example.com;
# 证书文件路径
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key
# 开启 TLS 1.2 和 TLS 1.3 协议
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
3. 配置HSTS(HTTP Strict Transport Security) 安全增强策略
开启 HSTS 后,浏览器将强制仅通过 HTTPS 访问您的目标网站,有效防御协议降级攻击,效防止一些潜在的中间人攻击,包括 SSL 剥离,会话 cookie 窃取等。
server {
listen 443 ssl;
server_name example.com;
# 证书文件路径
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key
# 开启 TLS 1.2 和 TLS 1.3 协议
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
# 配置 HSTS 安全增强策略
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
4. Nginx SSL/TLS 安全配置最佳实践
server {
listen 443 ssl http2; # 启用 HTTP/2 以提升性能
server_name example.com;
# 1. 证书与私钥配置
ssl_certificate /path/to/fullchain.pem; # 包含中间证书的证书链 [12]
ssl_certificate_key /path/to/privkey.pem;
# 2. 协议与密码套件 (安全与性能平衡)
ssl_protocols TLSv1.2 TLSv1.3; # 禁用 SSLv2/v3, TLS1.0/1.1 [10]
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; # 强加密套件 [11]
ssl_prefer_server_ciphers on; # 优先使用服务器端密码套件 [10]
# 3. 会话恢复与缓存 (减少握手延迟)
ssl_session_timeout 1d; # 会话超时时间
ssl_session_cache shared:SSL:10m; # 共享会话缓存,10m 约可容纳 40,000 个会话
ssl_session_tickets off; # 禁用会话票据以增强前向安全性 [10]
# 4. OCSP Stapling (提升HTTPS速度和安全性)
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s; # 配置 DNS 解析器
resolver_timeout 5s;
# 5. 安全请求头 (A+评级必需)
add_header Strict-Transport-Security "max-age=63072000" always; # 启用 HSTS [8]
add_header X-Frame-Options SAMEORIGIN; # 防止点击劫持
add_header X-Content-Type-Options nosniff; # 防止 MIME 类型嗅探
add_header X-XSS-Protection "1; mode=block"; # 启用 XSS 保护
}
# 6. HTTP 到 HTTPS 强制跳转
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}