浏览器为什么会提示“HTTPS 不安全”?
浏览器在访问 HTTPS 网站时,会同步执行多项安全检查:
- SSL 证书是否由可信 CA 机构签发;
- 证书是否仍在有效期内;
- 证书绑定的域名与当前访问的地址是否一致;
- 服务器是否返回了包含中间证书的完整证书链;
- 页面中加载的资源(图片、脚本、样式表)是否全部为 HTTPS 协议。
其中任何一项未能通过校验,浏览器都会在地址栏弹出“不安全”、“Not Secure”文字,或者抛出 NET::ERR_CERT_AUTHORITY_INVALID、NET::ERR_CERT_COMMON_NAME_INVALID 等错误代码。
如果你想先了解 SSL 证书的基本工作机制与加密原理,可以阅读什么是SSL证书?。
HTTPS 显示不安全的常见原因及解决方法
按实际运维习惯,建议按照以下由简到繁的顺序逐一进行排查:
1. SSL 证书过期或系统时间异常
这是日常运维中最常见、也最容易核实的问题。SSL 证书签发时包含严格的时间区间:notBefore(生效时间)与 notAfter(到期时间)。
- 常见报错: 浏览器提示
NET::ERR_CERT_DATE_INVALID。 - 排查与解决:
- 检查客户端与 Web 服务器的系统时间是否与 NTP 标准时间同步(时间偏差可能导致刚签发的证书被判定为尚未生效)。
- 检查证书是否已过有效期。若因安装或证书状态异常导致报错,可以参考如何修复SSL证书错误?。
2. 访问域名与 SSL 证书绑定的 SAN 不匹配
SSL 证书只能保护其主体别名(SAN)字段中明确包含的域名。
- 常见报错:浏览器提示
NET::ERR_CERT_COMMON_NAME_INVALID。 - 排查与解决:
- 例如:证书签发时仅保护了
www.example.com,但用户在浏览器中输入了未保护的example.com或api.example.com。 - 如果业务需要同时保护主域名、子域名或多个独立域名,申请时需将所有域名加入 SAN 列表。关于如何选择合适的证书类型,可以参阅SSL证书类型怎么分?与SSL证书选购指南。
- 例如:证书签发时仅保护了
3. SSL 证书链不完整(遗漏中间证书)
这是企业网站在部署时最容易忽略的问题。很多运维人员在 Nginx 或 Apache 中只配置了站点自己的证书(如 example.com.crt),但忽略了中间证书链(ca-bundle.crt)。
- 常见报错:桌面端 Chrome 访问正常(因为桌面端会自动尝试寻找并补充中间信任链),但手机端 Safari、微信小程序或 API 接口请求直接报错
NET::ERR_CERT_AUTHORITY_INVALID。 - 排查与解决:
- 重新生成包含完整证书链的 Full Chain 文件,并在服务端重新加载。例如 Nginx 命令:
- 详细配置及命令说明可参考怎么安装SSL证书?。
4. 网站存在 HTTP “混合内容”(Mixed Content)
即使 SSL 证书安装正确且在有效期内,如果网页自身的 HTML 源码中依然通过 http:// 路径引用了图片、CSS、JS 脚本或 iframe 页面,浏览器就会降低页面的安全等级,提示“部分内容不安全”。
- 排查方法: 在 Chrome 浏览器中按
F12打开开发者工具,点击 Console 选项卡,寻找包含Mixed Content的红色或黄色警告信息。 - 排查与解决:
- 首选方案(彻底修复):修改源码,将所有静态资源的硬编码链接改为
https://或相对协议路径(如//[cdn.example.com/style.css](https://cdn.example.com/style.css))。 - 过渡方案:在 HTML
<head>标签中加入 CSP 指令,强制浏览器将本站发起的 HTTP 请求升级为 HTTPS: - 关于如何将全站链接与数据库完整迁移至加密状态,可以参考网站如何从HTTP更改为HTTPS?。
- 首选方案(彻底修复):修改源码,将所有静态资源的硬编码链接改为
HTTPS 显示不安全的快速排查表
当遇到 SSL 证书正常但网站仍提示不安全时,可对照下表顺序快速定位:
| 排查顺序 | 检查项目 | 排查与判断方法 | 常见错误代码 / 提示 |
|---|---|---|---|
| 1 | 证书有效期 | 查看证书notAfter字段及服务器 NTP 时间 | NET::ERR_CERT_DATE_INVALID |
| 2 | 域名匹配 | 检查证书 SAN 列表是否覆盖当前访问域名 | NET::ERR_CERT_COMMON_NAME_INVALID |
| 3 | 证书链完整性 | 使用 OpenSSL 命令或在线工具检测中间证书 | NET::ERR_CERT_AUTHORITY_INVALID |
| 4 | 混合内容 | 打开 Chrome F12 Console 检查未加密资源 | Mixed Content/ 地址栏黄色警告 |
| 5 | HTTP 自动跳转 | 检查服务端 301 重定向规则配置 | 用户直接输入域名默认走 80 端口 |
常见问题 FAQ
Q:SSL 证书正常且在有效期内,但网站仍显示“不安全”是什么原因?***
A:这种情况通常有两个原因:一是网页源码中存在未修改的 HTTP 静态资源(混合内容),导致浏览器降低安全评级;二是 Web 服务器部署时缺少中间证书链(ca-bundle.crt),导致部分移动端设备无法建立完整信任。
Q:为什么电脑访问显示安全,但手机访问提示“不安全”?***
A:绝大多数是因为服务端缺失中间证书。部分桌面端浏览器(如 PC Chrome)拥有内部缓存或 AIA 自动补全机制,能够自动下载缺失的中间证书;而手机端(iOS Safari/Android)对信任链要求较为严格,必须由 Web 服务器主动在握手时返回完整证书链。
Q:使用免费 SSL 证书会导致 HTTPS 显示“不安全”吗?***
A:不会。通过合规 CA(例如 Let's Encrypt 等)签发的免费 DV SSL 证书,其根证书信任度与商业 DV 证书完全一致。只要安装无误、域名匹配且证书在有效期内,不会被浏览器标记为不安全。如果想了解免费证书的申请与配置,可以参阅免费SSL证书是什么?怎么申请?。
HTTPS 显示“不安全”并不意味着 SSL 证书本身有故障。在排查过程中,应优先确认证书有效期、域名 SAN 匹配以及证书链完整性,随后在开发者工具中清理残存的 HTTP 混合内容,即可恢复正常可信的绿锁加密状态。
解决 HTTPS 显示不安全的问题,关键在于将排查流程标准化。通过建立证书到期监控提醒、规范 Web 服务端的 Full Chain 部署,并彻底清理前端代码中的 HTTP 外链,可以在很大程度上杜绝此类影响用户信任和业务访问的安全报错。



京公网安备11010502031690号
网站经营企业工商营业执照
















