HTTPS Troubleshooting

证书有效,浏览器为什么仍显示不安全?

证书有效只证明某次 TLS 握手通过。页面资源、访问域名、CDN、重定向和浏览器缓存仍会影响地址栏状态。

最常见原因混合内容HTTPS 页面加载了 HTTP 资源。

先确定浏览器显示的是哪类问题

提示或现象含义优先方向
地址栏不安全,但证书可查看且有效页面可能包含 HTTP 资源或表单开发者工具 Console/Network。
NET::ERR_CERT_COMMON_NAME_INVALID证书未覆盖当前访问名称检查根域名、www 和其他子域名 SAN。
NET::ERR_CERT_AUTHORITY_INVALID证书链或信任根异常检查 fullchain、中间证书和自签证书。
无痕窗口正常,普通窗口异常浏览器缓存、扩展或旧 HSTS/重定向状态清缓存、禁用扩展、删除站点数据。
部分网络正常,部分网络异常CDN 节点、IPv6 或 DNS 返回不同终点比较 A/AAAA 和不同节点证书。

检查混合内容

打开开发者工具,刷新页面,在 Console 中查找 “Mixed Content”,再在 Network 中筛选以 http:// 开头的请求。常见来源包括正文图片、CSS 背景图、字体、统计脚本、iframe、表单 action 和接口地址。

  1. 将站内绝对 HTTP 地址改为 HTTPS 或可靠的站内相对地址。
  2. 第三方资源若不支持 HTTPS,替换服务商或将资源合法托管到自己的 HTTPS 域名。
  3. 清理数据库和模板中的旧地址,不能只改当前页面 HTML。
  4. 重新检查 Service Worker 与 CDN 缓存,确保没有继续返回旧资源。
不要用浏览器“允许不安全内容”作为正式修复。它只改变当前客户端行为,访问者仍会遇到问题。

验证当前域名真正返回的证书

openssl s_client -connect example.com:443 -servername example.com \
  </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates -ext subjectAltName
curl -IL https://example.com/

必须携带 SNI,且要分别测试 example.comwww.example.com。如果经过 CDN,浏览器看到的是 CDN 边缘证书;源站证书有效并不能证明边缘证书已更新。使用 SSL 实时检测可读取当前公网 443 返回的证书和跳转。

检查完整链、重定向与 HSTS

Nginx 的 ssl_certificate 通常应指向包含站点证书和中间证书的 fullchain 文件。HTTP 应稳定跳转到唯一 HTTPS 地址,避免不同主机名来回切换。HSTS 只应在 HTTPS 全面可用后开启;它会让浏览器强制使用 HTTPS,所以错误配置无法靠输入 HTTP 绕过。

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

常见问题

为什么手机正常,电脑仍提示不安全?

电脑可能缓存旧证书、旧重定向或安装了拦截 HTTPS 的安全软件。先用无痕窗口和另一个浏览器比较。

证书覆盖 *.example.com,为什么 example.com 仍不匹配?

通配符通常覆盖一级子域名,但不自动覆盖根域名,需要将 example.com 单独写入 SAN。

CSP 的 upgrade-insecure-requests 能代替修复吗?

它可作为过渡保护,但资源本身不支持 HTTPS 时仍会失败,长期应修正内容源地址。

作者与维护

作者与维护: 核对方式:公网实测与官方资料 最后核对:2026年8月21日

本文依据浏览器 TLS 与混合内容行为维护。发现差异可通过反馈表单提交。