最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中 HTTPS 配置如何开启强密码套件防御中间人攻击
时间:2026-08-24 11:38:49 编辑:袖梨 来源:一聚教程网
防御中间人攻击需禁用TLS 1.0/1.1及弱算法,强制ssl_protocols TLSv1.2 TLSv1.3,配置ECDHE+AES-GCM强密钥套件,启用HSTS与OCSP Stapling,并隐藏版本信息。
只启用 HTTPS 不等于安全,防御中间人攻击的关键在于让连接无法被降级、无法被解密、无法被伪造。Nginx 的 SSL 密码套件配置是其中最直接有效的防线之一。
禁用不安全协议和弱算法
SSLv2/v3、TLS 1.0 和 TLS 1.1 已被证实存在严重漏洞(如 POODLE、BEAST),必须彻底关闭。RC4、DES、3DES、MD5、SHA1 等加密或哈希算法也已不再可信。
- 在 http 或 server 块中明确指定:
ssl_protocols TLSv1.2 TLSv1.3;- 不要写
TLSv1.1或更低版本,哪怕只为兼容旧设备——妥协会直接打开中间人攻击入口
配置高强度且优先级清晰的密码套件
密码套件不是“越多越好”,而是要精简、可控、可验证。优先选择支持前向保密(PFS)、认证加密(AEAD)的组合,例如基于 ECDHE 密钥交换 + AES-GCM 或 ChaCha20-Poly1305 的套件。
- 推荐配置(兼顾安全性与主流客户端兼容性):
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256';- 避免使用
HIGH、!aNULL这类模糊指令,它们可能隐含不安全选项 - 禁用客户端强制协商弱算法:
ssl_prefer_server_ciphers off;(TLS 1.3 下自动生效,保留该行不影响安全且兼容旧 TLS 1.2 客户端)
启用 HSTS 强制浏览器走 HTTPS
即使你做了 301 跳转,首次 HTTP 请求仍可能被劫持。HSTS 让浏览器记住“只许走 HTTPS”,从源头阻断降级路径。
- 在 443 server 块中添加:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;-
max-age=31536000表示一年内强制 HTTPS -
includeSubDomains扩展保护到所有子域名 -
preload是可选但强烈建议——提交至浏览器预加载列表后,新用户首次访问即受保护
开启 OCSP Stapling 提升证书可信度
客户端需验证证书是否被吊销,传统 OCSP 查询会暴露用户行为并增加延迟。OCSP Stapling 由服务器主动获取并缓存状态,随握手一并发送,既提速又防窥探。
- 配置如下(需确保证书链完整):
ssl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /etc/nginx/ssl/ca_bundle.crt;resolver 8.8.8.8 8.8.4.4 valid=300s;
这些配置共同作用:协议层切断降级可能,密码层保障传输不可逆,HSTS 锁定访问路径,OCSP 确保身份真实。不是堆砌参数,而是层层设防。