# SEC_ERROR_EXPIRED_CERTIFICATE：证书过期还是电脑时间不对

> Firefox 提示 SEC_ERROR_EXPIRED_CERTIFICATE，要么证书真的过期了，要么电脑时间快了。怎么从警告页的日期分辨两者，以及站长续期后怎样重载生效。

Source: https://ssl.sh/zh/errors/sec-error-expired-certificate/
Last updated: 2026-11-10

**SEC_ERROR_EXPIRED_CERTIFICATE 的意思是：按你设备的时钟，证书已经过了到期日。** 要么网站忘了续期，要么你的电脑以为现在比实际更晚。Firefox 会在警告页上写出你电脑当前的日期，通常几秒钟就能分辨。

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

警告页上 Firefox 显示的日期（“您的计算机时钟设置为……”之类的提示）不对，就是你电脑的问题，改时间即可。日期正确，再用 [SSL 检测](https://ssl.sh/zh/tools/ssl-checker/) 确认：

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

- **检测也显示证书过期**：网站需要续期，访客这边没有安全的办法。
- **检测显示证书有效，你的时间也对**：可能是代理、杀毒软件或 Wi-Fi 认证页拿出了它自己的过期证书。在证书查看器里看颁发者。

## 原因

证书过期最常见的原因是续期失败，或者续期后没部署、没重载服务；电脑时间不对排在其后。

### 1. 续期失败或续了没部署

ACME 任务坏了（DNS 改过、80 端口被封、云解析 API 密钥过期），或者花钱买的证书到期没换。查看到期日：

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

国内服务器常见的情况：安全组没放行 80 端口，或者域名备案出了问题导致访问被拦截，HTTP-01 验证失败，续期就一直不成功。可以改用 DNS 验证（DNSPod、阿里云解析都有 API）。

### 2. 续期了但没重载服务

新文件已经在磁盘上，Nginx、Apache 内存里用的还是旧证书。每次续期后都要重载：certbot 用 `--deploy-hook`，acme.sh 用 `--reloadcmd`。

### 3. 电脑时间快了

时钟跳到了未来（时区设置错、手动改过、主板时钟故障），有效证书也会被当成过期。打开自动设置时间。

### 4. 证书链里有过期的中间证书（SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE）

服务器打包的是旧中间证书。换成 CA 当前的证书链，或者用 [证书链工具](https://ssl.sh/zh/tools/chain-builder/) 生成。

### 5. 证书尚未生效（MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE）

时间慢了，常见于主板电池没电。修法一样：把时间改对。

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

Chrome 系浏览器把证书过期报成 NET::ERR_CERT_DATE_INVALID，curl 报 certificate has expired。

| 浏览器 | 显示内容 |
|---|---|
| Firefox | “警告：面临潜在的安全风险”，说明证书已于某日过期，代码 `SEC_ERROR_EXPIRED_CERTIFICATE` |
| Chrome / Edge / 360 / QQ 浏览器 | [NET::ERR_CERT_DATE_INVALID](https://ssl.sh/zh/errors/net-err-cert-date-invalid/) |
| Safari | “此连接非私人连接”，详情显示证书已过期 |
| curl | `SSL certificate problem: certificate has expired` |

## 站长怎么修

续期证书并重载服务能立即修好，再加上部署钩子，以后每次续期都会自动生效。

**1. 续期并重载。**

```bash
sudo certbot renew
sudo systemctl reload nginx
```

**2. 让续期能自己收尾。** 加上部署钩子，每次续期后自动重载：

```bash
sudo certbot renew --deploy-hook "systemctl reload nginx"
```

宝塔面板申请的 Let's Encrypt 证书会自动续签，但如果网站开了强制 HTTPS 又改过验证目录的规则，续签可能失败，要留意面板的续签日志。

**3. 所有副本都要更新。** 阿里云/腾讯云 CDN、负载均衡、邮件服务器不会自动读取源站的新文件，要在控制台更新证书，或者开启云平台的证书托管/自动部署。

**4. 监控到期时间。** 每次续期后用 `curl ssl.sh/example.com` 确认，并在到期前很早就设好提醒。2026 年证书最长 200 天，以后还会更短（可以用 [有效期计算器](https://ssl.sh/zh/tools/validity-calculator/) 查），只有自动化才靠得住，见 [自动续期](https://ssl.sh/zh/learn/automate-certificate-renewal/)。
