一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何通过 Nginx 禁用弱加密算法的 HTTPS 连接

时间:2026-06-20 10:16:58 编辑:袖梨 来源:一聚教程网

直接在 Nginx 的 HTTPS server 块中配置 ssl_protocols TLSv1.2 TLSv1.3 和白名单式 ssl_ciphers(仅含 ECDHE/DHE+AES-GCM/CHACHA20-POLY1305 等 PFS+AEAD 套件),并保持 ssl_prefer_server_ciphers off,即可在 TLS 握手阶段主动拒绝所有含 RC4、3DES、MD5、SHA1、SSLv2/v3、TLSv1.0/1.1 的连接。

直接在 Nginx 的 HTTPS server 块中收紧 ssl_protocolsssl_ciphers 配置,就能在 TLS 握手阶段拒绝所有使用 RC4、3DES、MD5、SHA1、SSLv2/v3、TLSv1.0/1.1 等弱协议与弱算法的连接——这不是事后拦截,而是从源头阻止握手成功。

只启用安全协议版本

在 server 块中明确指定:

  • ssl_protocols TLSv1.2 TLSv1.3; —— 这会彻底禁用 SSLv2、SSLv3、TLSv1.0 和 TLSv1.1,不协商、不回退
  • 避免写 ssl_protocols TLSv1(等价于 TLSv1.0)、all 或留空(依赖旧版默认值)
  • TLSv1.3 天然剔除所有已知弱算法(如 RSA 密钥传输、CBC、RC4、3DES),但需 OpenSSL ≥ 1.1.1 支持

白名单式限定强加密套件

用精确列举方式只保留前向保密(PFS)+ 认证加密(AEAD)的现代套件:

  • 推荐配置:
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
  • 该列表不含 RC4、3DES、DES、MD5、SHA1(签名或 PRF)、EXPORT、NULL、ANONYMOUS、STATIC RSA
  • 全部基于 ECDHE 或 DHE,确保每次握手生成临时密钥;全部使用 AES-GCM 或 CHACHA20-POLY1305,杜绝 CBC 模式风险

配套关键指令确保策略不被绕过

单设 cipher 列表不够,还需以下协同:

  • ssl_prefer_server_ciphers off; —— Nginx 1.11.0+ 默认值,保持关闭才能启用 TLSv1.3;设为 on 会禁用 TLSv1.3
  • ssl_ecdh_curve secp384r1:secp521r1; —— 指定强椭圆曲线,避免 sect163k1 等弱曲线
  • ssl_dhparam /path/to/dhparam.pem; —— 若含 DHE 套件,必须提供 ≥3072 位 DH 参数,防 Logjam

验证是否真正生效

重载配置后必须实测,不能只看语法检查:

  • nmap --script ssl-enum-ciphers -p 443 your-domain.com 扫描:输出中不应出现 RC43DESSHA1TLSv1.0 等字样
  • openssl s_client -connect your-domain.com:443 -cipher "RC4" -tls1_2 测试:应返回 handshake failedno ciphers available
  • 用 SSL Labs 免费测试(ssllabs.com)查看 “Handshake Simulation”:老旧客户端如 WinXP/IE6 应显示 “No SNI” 或 “Failed”,而非降级成功
  • 检查 Nginx error log:若出现 no suitable signature algorithmssl handshake failed,说明拒止正常发生

热门栏目