# NET::ERR_CERT_DATE_INVALID 是什么意思，怎么解决

> Chrome 提示 NET::ERR_CERT_DATE_INVALID，说明证书已过期或还没生效。先查网站证书，再查电脑时间，站长续期后要重载服务。

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

**NET::ERR_CERT_DATE_INVALID 的意思是：现在的时间不在证书有效期内，原因要么是网站证书过期，要么是你设备上的时间不对。** Chrome 会在“您的连接不是私密连接”页面下方显示这个代码；Edge、360 安全浏览器（极速模式）、QQ 浏览器等基于 Chromium 的浏览器用的是同一个代码。

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

网站证书过期是网站的问题，证书有效而本机报错是你设备的问题。先别动自己的电脑，打开 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/)，或者运行：

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

- **检测结果显示证书已过期**：网站的问题。访客只能等，或者通知网站方；站长直接看下面“站长怎么修”。
- **检测结果显示证书有效**：问题在你的设备上。看看报错那台设备的日期时间：主板电池没电导致开机时间回到 2000 年前后、手机关了“自动设置时间”、虚拟机从很久以前的快照恢复，都会让所有 HTTPS 网站一起报这个错。

一个简单判断：**所有 HTTPS 网站同时报错，基本是你设备的时间或软件问题；只有一个网站报错，基本是那个网站的问题。**

## 原因

证书过期最常见，其次是访客设备的时间不对。

### 1. 证书过期了（最常见）

自动续期任务失败、新证书签下来了但没部署，或者部署了但 Web 服务没重载。用下面的命令确认：

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

`notAfter` 早于今天，就是过期了。certbot、acme.sh 续期只是把新文件写到磁盘，Nginx、Apache 不重载就会一直用内存里的旧证书。

### 2. 访客设备的时间不对

改时间，不要改浏览器设置。Windows 打开“设置 → 时间和语言 → 日期和时间”，打开“自动设置时间”，再点“立即同步”；同步失败可以把时间服务器换成 `ntp.aliyun.com`。macOS 在“系统设置 → 通用 → 日期与时间”里打开自动设置。手机打开“自动确定日期和时间”。详细步骤见 [系统时间错误导致的证书报错](https://ssl.sh/zh/errors/wrong-system-clock-ssl-error/)。

### 3. 证书还没生效

刚签发几分钟的证书，在时钟慢了几个小时的设备上会被判定为“尚未生效”。CA 通常会把 `notBefore` 往前挪一点来容忍小误差，所以这种情况主要出现在时间差得比较多的设备上。

### 4. 某台服务器或某个节点还在用旧证书

负载均衡、多台源站或 CDN 后面，只要有一台没更新，就会出现“刷新一下好了、再刷新又报错”。逐个 IP 测：

```bash
curl -v --resolve example.com:443:203.0.113.10 https://example.com/ -o /dev/null
```

### 5. 证书链里有过期的中间证书

服务器发出的中间证书是旧版本时，部分客户端会沿着它构建证书链然后失败。用 [证书链工具](https://ssl.sh/zh/tools/chain-builder/) 重新生成完整链，替换掉旧的 bundle 文件。

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

Chromium 内核的浏览器都显示 `NET::ERR_CERT_DATE_INVALID`，Firefox 把过期和尚未生效分成两个代码。

| 浏览器 | 显示内容 |
|---|---|
| Chrome / 360 极速模式 / QQ 浏览器 | “您的连接不是私密连接”，下方有 `NET::ERR_CERT_DATE_INVALID` |
| Edge | “你的连接不是专用连接”，同样的错误代码 |
| Firefox | “警告：面临潜在的安全风险”，代码是 [SEC_ERROR_EXPIRED_CERTIFICATE](https://ssl.sh/zh/errors/sec-error-expired-certificate/) 或 `MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE` |
| Safari（Mac、iPhone） | “此连接非私人连接”，查看证书会显示已过期 |
| 安卓上的 Chrome | 和电脑版一样；时间明显不对时会直接提示“您的时钟慢了”或“您的时钟快了” |

Chrome 确认是设备时间出错时，会显示专门的“时钟慢了/快了”页面。看到这种提示，就去改时间，不用找网站。

## 站长怎么修

站长要续期证书、重载 Web 服务，并更新 CDN 和负载均衡上的每一份证书。

**1. 先看线上实际发的是哪张证书。** 用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 或 `curl ssl.sh/example.com`，能看到到期时间、完整证书链和证书里的所有域名。

**2. 续期。** certbot：

```bash
sudo certbot renew --cert-name example.com
sudo systemctl reload nginx
```

acme.sh：

```bash
acme.sh --renew -d example.com --force
acme.sh --install-cert -d example.com \
  --key-file /etc/nginx/ssl/example.com.key \
  --fullchain-file /etc/nginx/ssl/example.com.crt \
  --reloadcmd "systemctl reload nginx"
```

**3. 确认配置指向新文件。** Nginx 里 `ssl_certificate` 要指向完整证书链文件，而不是去年手工复制的那份：

```nginx
ssl_certificate     /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
```

**4. 所有放证书的地方都要更新。** 宝塔面板在“网站 → 设置 → SSL”里粘贴新证书并保存；阿里云、腾讯云的 CDN、负载均衡（SLB/CLB）和对象存储自定义域名各有一份证书，源站更新了不代表 CDN 节点也更新了，要在云控制台里重新绑定或开启证书自动更新。

**5. 自动化加监控。** 证书有效期 2026 年降到 200 天、2029 年降到 47 天（见 [证书有效期时间线](https://ssl.sh/zh/timeline/certificate-validity/)），手动续期跟不上这个频率。照着 [自动续期](https://ssl.sh/zh/learn/automate-certificate-renewal/) 配好自动化，再加一个到期提醒。
