# NET::ERR_CERT_AUTHORITY_INVALID 原因和解决方法

> NET::ERR_CERT_AUTHORITY_INVALID 表示 Chrome 不信任证书的签发者：自签名、私有 CA、证书链不全，或被杀软/代理拦截。

Source: https://ssl.sh/zh/errors/net-err-cert-authority-invalid/
Last updated: 2026-11-10

**NET::ERR_CERT_AUTHORITY_INVALID 的意思是：这张证书不是 Chrome 信任的机构签发的。** 只有一个网站报，多半是自签名证书、内部 CA 证书或证书链不完整；所有网站都报，几乎都是有软件或网络设备在拦截你的 HTTPS 流量。

## 先判断是网站的问题还是你电脑的问题

外部检测也报错，是网站的问题；外部检测正常而本机报错，是你的电脑或网络换掉了证书。先用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 从外部查网站，或者运行：

```bash
curl ssl.sh/example.com
```

- **检测提示“签发者不受信任”或“自签名”**：网站的问题。作为访客，要登录或付款的网站不要绕过警告。
- **检测显示证书链正常**：本地有东西换掉了证书。在 Chrome 地址栏点“不安全”，打开证书查看器，看“颁发者”一栏：写的是某个杀毒软件、你们公司，或者你不认识的名字，就是在你的设备或网络上被拦截了。

## 原因

只有一个网站报错，多半是前两种原因；所有网站都报，就是第 3 种，有软件或设备在拦截 HTTPS。

### 1. 自签名或私有 CA 证书

路由器、NAS、测试环境、公司 OA 系统经常用自签名证书或内部 CA 签的证书。用下面的命令确认：

```bash
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -subject -issuer
```

subject 和 issuer 完全一样就是自签名。面向公众的网站要换成公开信任的证书（免费的 ACME 证书就行）；内网系统应该由 IT 通过域控或终端管理软件统一下发内部根证书。

### 2. 证书链补不全

服务器只发了站点证书，客户端又拿不到中间证书。Chrome 一般能自己补，但不是每次都行，比如中间证书的下载地址在国内访问不稳定时。用 [证书链工具](https://ssl.sh/zh/tools/chain-builder/) 重新生成完整链。

### 3. 杀毒软件或公司设备拦截 HTTPS

开了 HTTPS 扫描的安全软件、做 SSL 解密的上网行为管理设备会装自己的根证书。根证书没装好、或者软件生成的证书有问题，就会每个网站都报错。见 [杀毒软件 HTTPS 扫描](https://ssl.sh/zh/errors/antivirus-https-scanning-ssl-error/) 和 [公司 SSL 解密](https://ssl.sh/zh/errors/corporate-ssl-inspection/)。

### 4. 根证书被 Chrome 移除或不在 Chrome 的列表里

Chrome 的根证书库和 Windows、macOS 的不完全一样。被 Chrome 停止信任的 CA，或者只在操作系统根库里的根，会出现“只有 Chrome 报错”。对照 [Chrome 根证书计划政策](https://www.chromium.org/Home/chromium-security/root-ca-policy/) 检查签发 CA，必要时换 CA。

### 5. 设备系统太旧

很老的系统缺少新根证书。升级系统，或者改用自带根证书库的浏览器。

## 在各浏览器/系统上的样子

Chrome、Edge、360 和 QQ 浏览器都显示 `NET::ERR_CERT_AUTHORITY_INVALID`，Firefox、Safari、安卓 App 和 curl 各有自己的报错文字。

| 浏览器 | 显示内容 |
|---|---|
| Chrome / Edge / 360 极速模式 / QQ 浏览器 | “您的连接不是私密连接”，代码 `NET::ERR_CERT_AUTHORITY_INVALID` |
| Firefox | [SEC_ERROR_UNKNOWN_ISSUER](https://ssl.sh/zh/errors/sec-error-unknown-issuer/) 或 [MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT](https://ssl.sh/zh/errors/mozilla-pkix-error-self-signed-cert/) |
| Safari | “此连接非私人连接”，详情显示证书不受信任 |
| 安卓 App | `Trust anchor for certification path not found`（[详情](https://ssl.sh/zh/errors/android-trust-anchor-not-found/)） |
| curl | `SSL certificate problem: unable to get local issuer certificate` |

## 站长怎么修

站长要做两件事：换成公开信任的证书，并发送完整证书链。

**1. 换成公开信任的证书。** 对外的网站不要用自签名或内部证书。用 certbot：

```bash
sudo certbot --nginx -d example.com -d www.example.com
```

宝塔面板可以在“网站 → 设置 → SSL”里直接申请 Let's Encrypt 证书；阿里云、腾讯云也提供免费 DV 证书，下载时选对应服务器类型（Nginx 选 PEM 格式）。

**2. 发送完整证书链。** Nginx 指向包含中间证书的 fullchain 文件：

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

从云平台下载的证书包里，`.pem` 或 `.crt` 文件一般已经是“站点证书 + 中间证书”，不要只复制第一段。

**3. 从外部复查。** 再跑一次 `curl ssl.sh/example.com`，证书链应当一直到受信任的根，没有警告。还要用 Firefox 和 curl 测，因为 Chrome 的自动补链会掩盖问题。

**4. 内网系统**通过域控组策略、终端管理软件统一下发公司根证书，而不是让员工每次点“继续前往”。
