标准 HTTPS 配置文件示例
在将 CertificateHub 申请的证书下载到服务器后,您可以使用以下标准模板。建议路径:/etc/nginx/conf.d/。
server {
listen 443 ssl http2;
server_name www.yourdomain.com;
# 证书文件路径
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
# SSL 优化参数
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# 协议与加密套件
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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS 增强安全
add_header Strict-Transport-Security "max-age=63072000" always;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
关键参数项详解
理解每一个参数的含义对于平衡安全性和兼容性至关重要。
| 参数项 | 说明 | 可选/推荐值 |
|---|---|---|
| ssl_certificate | 指定 PEM 格式的证书链文件路径(含中间证书)。 | 绝对路径。 |
| ssl_certificate_key | 指定与证书匹配的本地私钥文件路径。 | 绝对路径。 |
| ssl_protocols | 启用的 TLS 协议版本。 | TLSv1.2 TLSv1.3 (推荐) |
| ssl_ciphers | 定义的加密套件列表。 | 推荐使用现代加密标准(如 GCM 模式)。 |
| ssl_prefer_server_ciphers | 是否优先使用服务器定义的加密套件。 | on / off (现代协议建议 off)。 |
安全加固与优化
1. 强制 HTTP 跳转 HTTPS
为了确保所有访问都是加密的,请配置 80 端口自动重定向。
server {
listen 80;
server_name www.yourdomain.com;
return 301 https://$host$request_uri;
}
2. 启用 HTTP/2
在 listen 443 ssl 后面加上 http2。它能通过多路复用显著提升 HTTPS 网页的加载速度。
3. HSTS (安全传输机制)
通过 Strict-Transport-Security 响应头,通知浏览器该网站在未来一段时间内只允许通过 HTTPS 访问,防止协议降级攻击。
专家建议: 如果您的业务主要面向现代浏览器,建议只保留 TLS 1.2 和 TLS 1.3。TLS 1.0 和 1.1 已被视为不安全,且会降低安全评估分数。
四、 验证配置并生效
在重启 Nginx 之前,务必检查语法是否正确:
sudo nginx -t
# 如果提示 syntax is ok,则重启
sudo systemctl reload nginx