---
title: 浏览器显示「不安全」的 6 种原因与排查
url: https://www.paibaowork.com/ssl/troubleshoot/not-secure/
last_verified: 2026-10-12
version: v1.0
---

## 先说结论：地址栏写着「不安全」，就六种原因

浏览器不会无缘无故说你的网站不安全。它只核对三件事：**证书是不是受信任的机构签的、证书上的域名和访问的域名对不对得上、证书有没有过期**；再额外检查一件事——页面里有没有还在用 `http://` 加载的资源（混合内容）。全部通过就显示正常状态，任何一条不过就出现「不安全」或整页红屏。

![【真实截图】地址栏显示「不安全」的 https 网站（实验环境演示站点）](/ssl/images/xarticle/01-not-secure.png)

| 你看到的样子 | 最可能的原因 | 错误码（红屏时才有） | 修哪里 |
|---|---|---|---|
| 地址栏写着「不安全」，网址是 `http://` 开头 | ① 根本没装证书，或装了但没强制跳转 | 无错误码 | 装免费证书 + 强制跳转 |
| 整页红屏「您的连接不是私密连接」 | ② 证书**过期**（最常见） | `NET::ERR_CERT_DATE_INVALID` | 续期 / 重新申请 |
| 整页红屏 | ③ 证书上的**域名对不上**（证书只有 www，访问的是裸域名） | `NET::ERR_CERT_COMMON_NAME_INVALID` | 重新签发，补上域名 |
| 整页红屏 | ④ 证书**不被信任**（自签名、测试证书，或 Cloudflare 源证书被直接访问） | `NET::ERR_CERT_AUTHORITY_INVALID` | 换成受信任的免费证书 |
| 电脑正常，**手机/安卓**提示证书不可信 | ⑤ **证书链不完整**（只装了域名证书，没装中间证书） | 手机端常见 | 换成完整证书链 |
| 网址是 `https://`，仍提示「不安全」或图片不显示 | ⑥ **混合内容**：页面里还有 `http://` 的图片、脚本 | 无错误码，控制台有 Mixed Content 提示 | 把资源地址改成 https |

> [!TIP] 先分清三档，排查速度差十倍
> **只有「不安全」三个字**（没有红屏）→ 大概率是①纯 HTTP 或⑥混合内容，网站还能打开，属于「慢性失血」。**整页红屏、能点「高级 → 继续访问」** → ②③④，证书本身坏了。**整页红屏且没有「继续访问」** → 证书坏了同时还开着 HSTS，客户一个都进不来。四种故障分别长什么样，见[四种 SSL 故障实景演示](/ssl/troubleshoot/four-failures/)。

## 原因① 纯 HTTP：根本没有证书

- **你看到的**：地址栏左侧写着「不安全」，网址是 `http://` 开头。
- **原因**：网站从来没申请过证书；或者申请了、但访客用 `http://` 进来时没有自动跳转到 `https://`。
- **怎么确认**：手动在地址栏把 `http://` 改成 `https://` 再回车。能正常打开 → 是「没开强制跳转」；打不开或红屏 → 是「根本没有证书」。
- **怎么修**：先申请免费证书，再打开强制跳转（301）。六条路线（Linux/Certbot、宝塔、cPanel、Cloudflare、IIS、SaaS 平台）见[免费部署完全指南](/ssl/deploy/ssl-guide/)。

![【真实截图】纯 HTTP 网站：内容完整，但地址栏显示「不安全」](/ssl/images/guide/r06_notsecure_local.png)

> [!WARNING] 2026 年起这一档的代价更大了
> Google 官方宣布：从 Chrome 154（2026 年 10 月）起默认开启「始终使用安全连接」——用户第一次访问没有 HTTPS 的公共网站时，Chrome 会先弹警告、征求同意才打开。这意味着海外买家可能在看到你的产品之前就被吓走。

## 原因② 证书过期（最常见的一种）

- **你看到的**：整页红屏「您的连接不是私密连接」，错误码 `NET::ERR_CERT_DATE_INVALID`；点「高级 → 继续访问」还能硬进去。
- **原因**：免费证书有效期只有 90 天，而且会越来越短（Let's Encrypt 官方计划：2027-02-10 起 64 天、2028-02-16 起 45 天）。靠人工记着续期，早晚会漏一次。
- **怎么确认**：点地址栏左侧图标 →「连接是安全的」→「证书有效」，看**有效期**的截止日期；或用命令看：`echo | openssl s_client -connect 你的域名:443 -servername 你的域名 2>/dev/null | openssl x509 -noout -dates`。
- **怎么修**：先应急续期（Certbot 用 `sudo certbot renew`；宝塔/cPanel 在面板里重新申请），再回头查「为什么自动续期没生效」——定时任务是否在跑、续期时 80 端口是否被关、后来是否开了 CDN 或 301 规则。

![【真实截图】证书过期：整页红屏，错误码 NET::ERR_CERT_DATE_INVALID](/ssl/images/guide/r04_expired_local.png)

> [!TIP] 过期不是「忘了续」，是「没人管」
> Let's Encrypt 已从 2025-06-04 起停止发送到期提醒邮件。所以正确的做法不是「记得续」，而是：确认自动续期真的生效（`sudo certbot renew --dry-run` 看到 all simulated renewals succeeded），再额外注册一个免费的到期监控兜底。

## 原因③ 域名不匹配：证书只有 www，访问的是裸域名

- **你看到的**：整页红屏，错误码 `NET::ERR_CERT_COMMON_NAME_INVALID`。如果网站还开着 HSTS，红屏上连「继续访问」都没有。
- **原因**：证书上写的域名和你访问的域名对不上。最常见的两种：证书只包含 `www.你的域名`，客户输的是裸域名；或者服务器上站点配错，把另一个站点的证书发给了访客。
- **怎么确认**：用 `https://你的域名` 和 `https://www.你的域名` 各开一次。一个正常一个红屏 → 就是域名没配全。
- **怎么修**：重新申请时把**根域名和 www 都写进同一张证书**（Certbot 加 `-d 你的域名 -d www.你的域名`；宝塔申请时勾选两个域名）。多站点服务器要确认每个站点各自部署了证书，不要共用。

![【真实截图】证书域名对不上：整页红屏，错误码 NET::ERR_CERT_COMMON_NAME_INVALID（公开测试站 wrong.host.badssl.com）](/ssl/images/guide/r03_wronghost.png)

## 原因④ 自签名 / 不被信任的证书

- **你看到的**：整页红屏，错误码 `NET::ERR_CERT_AUTHORITY_INVALID`。
- **原因**：证书不是受浏览器信任的机构（CA）签发的。三种典型：用了自签名证书（自己给自己签的）；用了测试证书；在 Cloudflare 场景里把**源证书**直接暴露给了访客（比如 DNS 记录被改成「仅 DNS」灰色云朵，访客直连源站，而源站用的是 Cloudflare 源证书——浏览器不信任它）。
- **怎么确认**：点红屏页面的「高级」，看证书颁发者。如果是 Cloudflare 的 Origin CA、或者你自己生成的名字，就是这个原因。
- **怎么修**：换成受信任的免费证书（Let's Encrypt 等）。Cloudflare 场景：源站装 Let's Encrypt，或者把 DNS 记录恢复成「已代理」（橙色云朵），让访客走 Cloudflare 边缘证书。

> [!NOTE] 一张证书要同时满足三件事
> ① 由受信任机构签发；② 域名与访问域名一致；③ 在有效期内。②③ 是「配置问题」，① 是「证书来源问题」——免费证书同时满足这三条，和付费证书的加密强度完全一样。

## 原因⑤ 证书链不完整：电脑正常，安卓报错

- **你看到的**：电脑上一切正常，但部分手机（尤其安卓）提示证书不可信、或者干脆打不开。
- **原因**：只装了域名证书（`cert.pem`），没装**中间证书**。桌面浏览器常会自动补链，所以看不出来；部分安卓机和老旧客户端不会补，就报错。
- **怎么确认**：跑一次 SSL Labs（`https://www.ssllabs.com/ssltest/`），看有没有 **Chain issues / Incomplete** 这一条。
- **怎么修**：Nginx 用 `fullchain.pem` 而不是 `cert.pem`；宝塔、cPanel 里粘贴证书时确保包含完整的证书链（面板一般会同时给「证书」和「中间证书/链」两栏）。修完再用安卓手机测一次。

![【真实截图】SSL Labs 检测结果：目标 A 或 A+，并检查有没有 Chain issues](/ssl/images/guide/r11_ssllabs_result.png)

## 原因⑥ 混合内容：网址是 https，页面里还有 http 资源

- **你看到的**：地址栏可能显示正常、也可能仍提示不安全；页面排版错乱、图片不显示、询盘表单点不动。
- **原因**：页面本身是 `https://`，但里面的图片、脚本、样式、视频还是用 `http://` 地址加载。浏览器会拦截或自动升级这些资源，严重时整页降级提示不安全。
- **怎么确认**：按 F12 打开开发者工具 → Console，搜 `Mixed Content`，或者在 Network 里筛 `http://` 的资源；也可以在页面源码里搜 `http://`。
- **怎么修**：把页面模板里所有 `http://` 的资源地址改成 `https://`（或改成 `//` 开头、跟页面协议走）；在 Cloudflare 上可以打开 Automatic HTTPS Rewrites 兜底；改完用无痕窗口复测。

> [!TIP] 混合内容最爱藏在三处
> ① 文章正文里粘贴的旧图片链接；② 页脚/侧边栏的第三方统计、客服脚本；③ 模板里写死的字体或 CDN 地址。逐处搜 `http://` 最快。

## 一张表：按你看到的，直接跳到排查步骤

| 现象 | 先做这一步 | 判定标准 |
|---|---|---|
| 网址是 `http://`，地址栏「不安全」 | 手动改成 `https://` 打开 | 能开 → 只差强制跳转；打不开 → 没证书 |
| 红屏 + `ERR_CERT_DATE_INVALID` | 点图标看证书有效期 | 截止日期已过 → 续期；没过 → 看访客电脑时间 |
| 红屏 + `ERR_CERT_COMMON_NAME_INVALID` | 裸域名和 www 各开一次 | 一个正常 → 证书没包含两个域名 |
| 红屏 + `ERR_CERT_AUTHORITY_INVALID` | 看证书颁发者是谁 | 不是受信任 CA → 换免费证书 / 恢复 Cloudflare 代理 |
| 电脑正常、手机报错 | SSL Labs 看 Chain issues | 有 Incomplete → 换成 fullchain |
| https 了还提示不安全 | F12 → Console 搜 Mixed Content | 有 → 逐个改 `http://` 资源 |

## 修好之后：三分钟验收

1. **四个网址都试一遍**：`https://你的域名`、`https://www.你的域名`、`http://你的域名`、`http://www.你的域名`。前两个应正常显示锁头，后两个应自动跳转到 https。
2. **手机上再试一遍**（用手机流量，别用公司 WiFi；最好找一台安卓）。
3. **跑一次 SSL Labs**，目标 A 或 A+，并确认没有 Chain issues、没有「证书不受信任」的 T 评级。
4. **确认自动续期**：`sudo certbot renew --dry-run` / 宝塔看续签状态 / Cloudflare 看边缘证书状态，然后注册一个免费的到期监控。

## 三句话记住

> [!WARNING] 别在错误的方向上花时间
> 1. 「不安全」三个字和整页红屏是两码事：前者还能打开（①⑥），后者客户根本进不来（②③④）。
> 2. 证书只坏三种：过期、域名不对、来源不被信任；加上混合内容和证书链，就是全部六种。
> 3. 修完必须用手机、裸域名、www 各测一次——电脑上正常不代表客户那边正常。

## 下一步

- 先看看四种故障分别长什么样：[四种 SSL 故障实景演示（附 30 秒自查）](/ssl/troubleshoot/four-failures/)。
- 不确定自己是哪一档：先做 [免费体检](/tools/ssl-check/)，拿到结果再对症下药。
- 从零部署免费证书：[网站 SSL 证书免费部署完全指南（小白版）](/ssl/deploy/ssl-guide/)。
- 想让别人长期盯着它：[SSL 证书终身维护服务](/services/ssl-maintenance/)（600 元/域名 · 长期统一价）。

## 常见问题

### 地址栏显示「不安全」，但网站能正常打开，要紧吗？

要紧。这通常只有两种原因：网站还是纯 HTTP，或者页面里还有 http 的图片和脚本（混合内容）。访客看到「不安全」会直接降低信任，而且 Google 已宣布 Chrome 154（2026 年 10 月）起默认对没有 HTTPS 的公共网站先弹警告。修起来也不难：装免费证书、打开强制跳转、把页面里的 http 资源改掉。

### 红屏上写「您的连接不是私密连接」，我该先做什么？

先看红屏页面下方的错误码。ERR_CERT_DATE_INVALID 说明证书过期，立刻续期；ERR_CERT_COMMON_NAME_INVALID 说明证书域名和访问的域名对不上，重新签发时把根域名和 www 都加上；ERR_CERT_AUTHORITY_INVALID 说明证书不被浏览器信任，要换成受信任机构签发的免费证书。如果红屏上没有「继续访问」按钮，说明网站还开着 HSTS，只能先把证书修对。

### 电脑打开正常，为什么手机提示证书不可信？

最常见的原因是证书链不完整：只装了域名证书，没装中间证书。桌面浏览器常会自动补链所以看不出来，部分安卓手机不会补，就报错。修法是让服务器使用包含完整链的证书文件（Nginx 用 fullchain.pem），在面板里粘贴证书时也要包含中间证书，最后用 SSL Labs 确认没有 Chain issues。

### 网址已经是 https 了，为什么还提示不安全？

这是混合内容：页面本身是 https，但里面的图片、脚本、样式还是用 http 加载。浏览器会拦截或自动升级这些资源，严重时整页降级提示不安全，还会出现排版错乱、询盘表单点不动。按 F12 打开开发者工具，在 Console 里搜 Mixed Content，把对应资源地址改成 https 即可。

### 修好之后，我怎么确认客户那边真的正常了？

用三分钟做验收：四个网址各开一次，也就是裸域名和 www 分别用 http 和 https 访问，前两个应正常显示、后两个应自动跳转到 https；用手机流量再试一次，最好找一台安卓手机；跑一次 SSL Labs，目标 A 或 A+，并确认没有 Chain issues；最后确认自动续期真的生效，并注册一个免费的到期监控兜底。

## 资料来源与核实记录

| 事实 | 来源 | 核实日期 |
|---|---|---|
| 「为什么我的网站显示不安全」原因对照表（本页六类原因的来源） | https://www.paibaowork.com/ssl/deploy/ssl-guide/ | 2026-10-10 |
| Chromium 网络错误码官方列表：ERR_CERT_DATE_INVALID / ERR_CERT_COMMON_NAME_INVALID / ERR_CERT_AUTHORITY_INVALID | https://chromium.googlesource.com/chromium/src/+/main/net/base/net_error_list.h | 2026-10-10 |
| Let's Encrypt 证书有效期 90 天，将缩短至 64 天与 45 天（公告 2025-12-02） | https://letsencrypt.org/2025/12/02/from-90-to-45 | 2026-10-10 |
| Let's Encrypt 到期提醒邮件服务已结束（2025-06-26），所以必须自己设置到期监控 | https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended.html | 2026-10-10 |
| 混合内容（Mixed content）的定义与浏览器处理方式 | https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content | 2026-10-10 |
| SSL Labs 在线检测：评级与 Chain issues（证书链不完整）判定 | https://www.ssllabs.com/ssltest/ | 2026-10-10 |
| Chrome 154（2026 年 10 月）起默认「始终使用安全连接」（公告 2025-10-28） | https://security.googleblog.com/2025/10/https-by-default.html | 2026-10-10 |

## 更新记录

- 2026-10-12 · v1.0：上线：六类原因逐项排查（纯 HTTP、过期、域名不匹配、自签名、证书链不完整、混合内容）、错误码映射表与三分钟验收清单。
