HTTPS安全加固需从证书、传输、响应和访问控制四层面构建防护体系;优先选用Let’s Encrypt或云厂商DV证书,Nginx须配置SSL监听、证书路径及HTTP强制跳转,并隐藏版本、限制请求方法、设置超时,同时通过certbot自动续期并热重载。

HTTPS 安全加固不是一步到位的配置动作,而是围绕证书、传输、响应和访问控制四个层面建立的防护体系。掌握基础,关键在于理清主线、避开常见坑点,并优先落实高性价比措施。
证书选择与获取要匹配实际场景
个人或测试环境用 Let’s Encrypt 就够了,它免费、被所有主流浏览器信任,且支持自动续期;企业官网建议选阿里云或腾讯云的免费 DV 证书(1 年有效期),管理更省心;涉及支付、登录等敏感操作的站点,才需 OV 或 EV 类型。通配符证书(如 *.example.com)适合有多个子域名的服务,避免为每个子域单独申请。
Nginx HTTPS 基础配置必须包含三项硬性设置
-
listen 443 ssl http2;:启用 HTTPS 并支持 HTTP/2 提升性能 -
ssl_certificate和ssl_certificate_key指向正确的证书链文件与私钥(推荐统一放在/etc/nginx/ssl/下,权限设为600) - 强制跳转:在 80 端口 server 块中加
return 301 https://$host$request_uri;,杜绝 HTTP 明文访问
安全加固从三处立即生效的配置入手
- 隐藏版本信息:在
http块中添加server_tokens off;,防止攻击者利用已知 Nginx 版本漏洞 - 限制非法请求方法:在
server块内加入if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS)$) { return 444; } - 设置合理超时:避免慢速攻击耗尽连接资源
client_body_timeout 10; client_header_timeout 10; keepalive_timeout 15; send_timeout 10;
别忽略自动续期这个“隐形守门人”
Let’s Encrypt 证书仅 90 天有效,手动续签极易遗忘。执行 certbot renew --dry-run 测试后,务必添加定时任务:
0 2 * * * certbot renew --quiet --post-hook "nginx -s reload"
确保每天凌晨 2 点自动检查并热重载配置。
不复杂但容易忽略


















