浏览器
NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM:SHA-1 或 MD5 签名证书
NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHMNET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM 的意思是:服务器发来的证书是用 SHA-1 或 MD5 签名的,这两种算法可以被伪造。 攻击者有能力造出一张签名相同的另一张证书,所以 Chrome 拒绝接受。修法是重新签发一张用 SHA-256 或更强算法签名的证书。
先判断是网站的问题还是你电脑的问题
检测结果里有 SHA-1 或 MD5 证书,是网站的问题;全是 SHA-256,是你的设备或网络换掉了证书。用 SSL 检测 查看签名算法:
curl ssl.sh/example.com
- 检测显示站点证书或中间证书是 SHA-1、MD5:网站或设备需要更新。
- 检测显示全是 SHA-256:你的设备或网络出示了另一张证书,多半来自老旧的 HTTPS 扫描软件或代理。升级或关闭它。
原因
这个错误的来源都是证书链里还留着 SHA-1 或 MD5 签名的证书:老 CA、老中间证书、老设备或老拦截软件。
1. 老的内部 CA
很多年前搭的 Windows AD CS 或 OpenSSL CA 可能还在用 SHA-1 签名。查看站点证书:
echo | openssl s_client -connect intranet.example.com:443 -servername intranet.example.com 2>/dev/null \
| openssl x509 -noout -text | grep "Signature Algorithm" | head -1
看到 sha1WithRSAEncryption 或 md5WithRSAEncryption 就是了。
2. 证书链里有 SHA-1 中间证书
站点证书没问题,服务器却还在发一张用 SHA-1 签名的老中间证书。替换证书链文件,证书链工具 会选用当前的中间证书。
3. 设备出厂证书
老的打印机、交换机、UPS 管理卡、KVM 出厂自带 SHA-1 证书。升级固件或上传新证书。
4. 过时的拦截软件
很老的安全产品可能仍用 SHA-1 重新签发流量,这时所有 HTTPS 网站在 Chrome 里都会失败。
在各浏览器/系统上的样子
同一个问题在 Chrome 系浏览器里报这个代码,Firefox 报 SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED,OpenSSL 3.x 报 ca md too weak。
| 浏览器 | 显示内容 |
|---|---|
| Chrome / Edge / 360 极速模式 / QQ 浏览器 | “您的连接不是私密连接”,代码 NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM |
| Firefox | “警告:面临潜在的安全风险”,代码 SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED |
| Safari | “此连接非私人连接” |
| OpenSSL 3.x | 默认安全级别下报 ca md too weak |
站长怎么修
用 SHA-256 重新签发站点证书,并把中间证书换成 SHA-256 的版本,报错就会消失。
1. 生成新私钥和 CSR(当前 OpenSSL 默认就是 SHA-256):
openssl req -new -newkey rsa:2048 -nodes -sha256 \
-keyout example.com.key -out example.com.csr \
-subj "/CN=example.com" -addext "subjectAltName=DNS:example.com"
也可以用浏览器里的 CSR 生成器。
2. 从公开 CA 重新签发;内部 CA 把哈希算法改成 SHA-256(AD CS 执行 certutil -setreg ca\csp\CNGHashAlgorithm SHA256,然后重启 CA 服务)。
3. 把中间证书换成 CA 当前的 SHA-256 证书链。
4. 验证。 用 curl ssl.sh/example.com 和 证书解析 检查:除根证书外,每张证书都应显示 sha256WithRSAEncryption 或 ECDSA-SHA256/384 签名。
常见问题
SHA-1 还有地方能用吗?
公开信任的 TLS 证书不能用。有些封闭的内部系统还在用 SHA-1 证书,但新版 Chrome、Firefox、Safari 都会拒绝,当前 OpenSSL 的默认安全级别也会拒绝。
我的根 CA 是 SHA-1 的,需要换吗?
根证书自己的 SHA-1 签名不用换。浏览器信任根证书是因为它在信任库里,而不是看它怎么给自己签名。但它签发出去的证书必须用 SHA-256 或更强的算法,所以 CA 软件要相应配置。
Firefox 遇到同样的问题显示什么?
Firefox 在“警告:面临潜在的安全风险”页面上报 SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED。
国密(SM2/SM3)证书在 Chrome 里会报这个错吗?
Chrome、Firefox、Safari 等主流浏览器不支持国密算法签名的证书,通常会报证书无效或不受信任,而不一定是这个代码。需要国密的系统一般采用“国密证书 + RSA/ECC 证书”双证书部署,让国际浏览器使用 RSA/ECC 证书。
老设备只能出示 SHA-1 证书,还能继续用吗?
可以在内网继续用,但不要让它暴露在公网上,只在可信的管理网络里访问它的管理页面。先去厂商官网找能导入新证书的固件,很多设备支持上传 PEM 格式的证书和私钥,可以用内部 CA 以 SHA-256 签发一张。实在无法更新,就要计划替换,因为新版浏览器已经打不开它的 HTTPS 管理界面了。