错误码是分诊线索
浏览器把证书与 TLS 校验失败归成固定的 NET::ERR_CERT_* 错误码,这些码本身就是分诊表:看到 DATE_INVALID 先查时间,看到 COMMON_NAME_INVALID 先查域名与 SAN,看到 AUTHORITY_INVALID 先查信任链。按码缩小范围,再用 openssl 在命令行复现,比凭感觉改配置快得多。企业网络里还要先排除代理注入根证书这一常见因素。
常见错误码对照
常见错误码对照
# 错误码 → 优先怀疑的方向
# NET::ERR_CERT_DATE_INVALID 证书有效期或客户端系统时间
# NET::ERR_CERT_COMMON_NAME_INVALID 域名与证书 SAN 不匹配
# NET::ERR_CERT_AUTHORITY_INVALID 信任链缺失、自签证书或代理注入
# NET::ERR_CERT_REVOKED 证书已被吊销
# NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM 弱签名算法
# NET::ERR_CERT_WEAK_KEY 密钥长度或强度不足
# NET::ERR_SSL_PROTOCOL_ERROR 协议或端口不匹配,可能把明文服务当 HTTPS 访问附加线索
| 详情面板 | 点开可看签发者与有效期,先确认是哪张证书在报错 |
|---|---|
| 换网络对比 | 换网络或换设备后消失,说明与本机时钟或代理有关 |
| 命令行复现 | openssl s_client -connect host:443 -servername host -showcerts |
| 跨浏览器验证 | 只有单一浏览器报错时优先怀疑缓存或本机策略 |
错误码与排查顺序
| 错误码 | 最可能的原因 | 第一步动作 |
|---|---|---|
| ERR_CERT_DATE_INVALID | 证书过期或客户端时钟偏差 | 比对证书 -dates 与系统时间 |
| ERR_CERT_COMMON_NAME_INVALID | SAN 列表里没有该域名 | 用 -servername 复现并检查 SAN |
| ERR_CERT_AUTHORITY_INVALID | 中间证书缺失或有代理根证书 | 换网络对比,检查完整链 |
| ERR_CERT_REVOKED | 证书已被吊销 | 核对 CA 吊销公告并尽快换证 |
| ERR_SSL_PROTOCOL_ERROR | 该端口上不是 HTTPS 服务 | 确认端口与协议,别先改证书 |
错误码是分类不是根因:仍需用 openssl 在命令行复现,核对链、域名与有效期之后才能下结论。
只有个别浏览器或个别网络报错时,先怀疑客户端侧因素:系统时间漂移、企业代理注入根证书、浏览器缓存了旧的证书状态。此时服务器配置往往是无辜的。
站点被 HSTS 覆盖时错误页不允许继续访问,问题会显得更严重;排查先用命令行确认证书本身,再考虑清理 HSTS 状态,不要为了让用户绕过而放宽安全策略。