先确定浏览器显示的是哪类问题
| 提示或现象 | 含义 | 优先方向 |
|---|---|---|
| 地址栏不安全,但证书可查看且有效 | 页面可能包含 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 和接口地址。
- 将站内绝对 HTTP 地址改为 HTTPS 或可靠的站内相对地址。
- 第三方资源若不支持 HTTPS,替换服务商或将资源合法托管到自己的 HTTPS 域名。
- 清理数据库和模板中的旧地址,不能只改当前页面 HTML。
- 重新检查 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.com 与 www.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 时仍会失败,长期应修正内容源地址。
作者与维护
作者与维护:iphelp站长工具箱站长 核对方式:公网实测与官方资料 最后核对:2026年8月21日
本文依据浏览器 TLS 与混合内容行为维护。发现差异可通过反馈表单提交。