TLS · 排查路径

证书正常,浏览器仍提示不安全的原因

浏览器的安全提示除了证书有效期,还会受主机名、证书链、协议协商、混合内容和页面跳转影响。

排查步骤

查看、判断、复查

  1. 01

    检查握手时 SNI 对应的证书 SAN 是否包含访问的主机名。

  2. 02

    确认完整证书链和颁发机构在目标客户端上可验证。

  3. 03

    检查 HTTP 到 HTTPS 的跳转,以及页面中是否仍引用 HTTP 资源。

  4. 04

    记录 TLS 协议、握手错误和浏览器控制台信息,再决定修复位置。

跟着示例核对

示例内容用于说明方法,非本站探测记录。复核于 2026-09-20。

模拟记录,非本站实测;时间 2026-09-20 09:00 +08:00,客户端 A,目标 https://app.example.com/

A 主机名:访问 app.example.com,SNI=app.example.com
服务端叶证书 SAN:DNS:other.example.com
客户端提示:hostname mismatch

B 证书链:访问 api.example.com,主机名匹配
客户端提示:unable to get local issuer certificate
服务端发出的证书列表:仅叶证书
客户端信任库版本:未知

C 页面资源:文档 https://app.example.com/ 的 TLS 校验成功,HTTP 200
Console:阻止加载 http://assets.example.com/app.js(Mixed Content)

怎样解释结果

A 的目标主机名与 SAN 不符,应核对域名绑定和 SNI 对应证书。B 说明此客户端无法建立信任链;只看到叶证书提示需检查中间证书,但也必须核对客户端信任库,不能仅凭错误文本断定唯一根因。C 的文档连接已成功,问题位于页面引用的 HTTP 脚本,不应当作证书过期。

不符合预期时

先记录地址、时间、客户端/信任库版本与完整错误。在自有或授权测试目标上,可用 openssl s_client -connect app.example.com:443 -servername app.example.com -verify_hostname app.example.com -verify_return_error -showcerts 查看服务端证书;命令中的域名须替换为授权目标。不要关闭证书校验来宣布修复;没有完整链或目标客户端证据时保留未知。

修改后复查

A 修正绑定后,在相同主机名/SNI 下核对 SAN 和验证结果;B 修正服务端链或目标客户端配置后,用原客户端及其信任库复验;C 改成确实可访问的 HTTPS 资源并检查 Network/Console 与页面功能。若链仍不受信任或脚本仍被阻止,停止发布,保留证据及回退方案。