排查Nginx HTTPS证书链弱签名算法告警,核心是确认服务器实际发送的证书是否使用SHA-1、MD5等淘汰签名哈希或RSA-1024等弱密钥算法;需用openssl s_client获取链、逐段检查Signature Algorithm和Public Key,确保终端及中间证书均采用sha256WithRSAEncryption及以上和RSA-2048+/ECDSA-secp384r1以上。

排查 Nginx HTTPS 证书链中弱签名算法告警,核心是确认服务器实际发送的证书是否使用了已被淘汰或不安全的签名哈希(如 SHA-1、MD5)或密钥算法(如 RSA-1024、DSA)。现代浏览器、curl 和 OpenSSL 1.1.1+ 默认拒绝 SHA-1 签发的证书,且对密钥长度和签名组合有严格校验。告警通常表现为 “certificate signature failure”、“weak signature algorithm” 或 SSL handshake failed。
检查终端证书与中间证书的签名算法
用 OpenSSL 直接提取并分析每张证书的签名信息:
- 运行命令查看当前服务端返回的所有证书:
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' > chain.pem - 拆分 chain.pem 中各段(可用 awk 或手动),分别检查:
openssl x509 -in cert1.pem -text -noout | grep -E "(Signature Algorithm|Public-Key)" - 重点关注:
• Signature Algorithm 字段:禁止出现 sha1WithRSAEncryption、md5WithRSAEncryption;推荐使用 sha256WithRSAEncryption 或 ecdsa-with-SHA384
• Public Key:RSA 密钥长度不得低于 2048 位;ECDSA 推荐 secp384r1 或更高
验证证书链中每级签发关系是否合规
弱签名不仅出现在终端证书,更常见于中间 CA 证书——例如 Let’s Encrypt 的旧 R1/R2 中间证书使用 SHA-1,已被主流客户端弃用。
- 逐级比对 Issuer(上一级 Subject)与签名算法:
openssl x509 -in cert1.pem -noout -issuer
openssl x509 -in cert2.pem -noout -subject
二者应一致,且 cert2.pem 的 Signature Algorithm 也需满足强算法要求 - 若发现中间证书为 SHA-1(如 “Issuer: CN=Let's Encrypt Authority X1” + “Signature Algorithm: sha1WithRSAEncryption”),说明你仍在使用已停用的旧链,必须切换至 R3 或 E1 等新中间证书
确认 Nginx 加载的是不含弱算法的完整链文件
即使你本地有新证书,Nginx 若加载了拼接错误或混入旧中间证书的 fullchain.pem,仍会触发告警。
- 检查 ssl_certificate 指向的 PEM 文件内容顺序与算法:
第一段必须是你的域名证书(SHA-256+,RSA-2048+)
后续段只能是配套的新中间证书(如 ISRG Root X1 → Let’s Encrypt R3),不能含 X1/X2/X3 等 SHA-1 中间体 - 常见错误:
• 从过时的 ca-bundle.crt 中复制中间证书
• 使用 certbot 早期版本生成的 fullchain.pem(未自动更新中间链)
• 手动拼接时误加入根证书(虽不直接导致弱签名告警,但可能干扰链解析) - 修复方法:
• Let’s Encrypt 用户:确保 certbot 版本 ≥ 1.12,执行 sudo certbot renew --force-renewal 获取新链
• 自建 CA 用户:用 openssl ca 重签中间证书,指定 -md sha256 -keysize 4096
交叉验证客户端实际收到的握手数据
某些 CDN 或 TLS 卸载设备会替换证书链,导致 Nginx 配置正确但终端看到的是弱签名证书。
- 绕过代理直连后端 IP+端口测试:
openssl s_client -connect 10.0.0.5:443 -servername example.com -showcerts - 用在线工具验证:
• SSL Labs 查看 “Handshake Simulation” 中各客户端显示的证书详情与签名算法
• Certificate Decoder 粘贴证书 Base64 内容,快速识别签名哈希与公钥参数 - 若直连无告警,而公网访问有告警,问题大概率在前置设备(如 Cloudflare、WAF、LB)未更新其证书链











