弱签名算法排查
排查的目标很直接:确认证书签名没有使用 SHA-1 或 MD5。公开信任的 TLS 证书早已不允许 SHA-1 签名,主流浏览器会对这类证书直接拦截。检查时要覆盖整条链——叶证书与中间证书分别查看,因为链上任意一张弱签名都可能触发拦截,而报错信息通常只笼统地说证书不受信任,容易把人引到错误方向。
基本信息
| 检查命令 | openssl x509 -text 配合查找 Signature Algorithm |
|---|---|
| 影响范围 | 叶证书与中间证书都要检查 |
| 替代方案 | SHA-256 或 SHA-384 等更强哈希的签名 |
| 内网同样适用 | 私有 CA 也应避免 SHA-1 |
| 常见来源 | 多年前签发的中间证书与自建 CA |
| 处置方式 | 重新签发,或更换为使用强签名的签发者 |
典型使用场景
- 上线前检查:确认新证书与整条链的签名算法都符合要求
- 资产盘点:批量扫描历史证书,找出仍用 SHA-1 的资产
- 排查浏览器拦截:先看签名算法,再检查其他项目
- 内网整改:把私有 CA 的签名算法一并升级
- 供应商核查:要求证书提供方说明签名算法与所用哈希
批量检查证书签名算法
批量检查证书签名算法
for f in *.pem; do
echo -n $f:
openssl x509 -in $f -noout -text 2>/dev/null | grep -m1 'Signature Algorithm'
done算法与状态
| 签名算法 | 状态 | 说明 |
|---|---|---|
| sha256WithRSAEncryption | 允许 | 当前通用的选择 |
| ecdsa-with-SHA256 | 允许 | 椭圆曲线证书常见 |
| sha1WithRSAEncryption | 不允许 | 公开信任链已被禁止 |
| md5WithRSAEncryption | 不允许 | 早已淘汰 |
内网私有 CA 同样建议避免 SHA-1:客户端或安全基线收紧后,存量证书会集中失效。
签名算法与公钥长度是两件事:3072 位的密钥如果仍用 SHA-1 签名,同样会被拒绝,排查时两个维度都要看。
续期本身不会自动修好这个问题:如果签发者就是使用弱签名的中间 CA,换一张叶证书也没用,必须先把链上的弱环节替换掉。
批量检查时务必带上链文件:把 fullchain 拆成单张证书再逐张看签名算法,比只检查叶证书更能反映真实的拦截风险。