浏览器
NET::ERR_CERT_DATE_INVALID 是什么意思,怎么解决
NET::ERR_CERT_DATE_INVALIDNET::ERR_CERT_DATE_INVALID 的意思是:现在的时间不在证书有效期内,原因要么是网站证书过期,要么是你设备上的时间不对。 Chrome 会在“您的连接不是私密连接”页面下方显示这个代码;Edge、360 安全浏览器(极速模式)、QQ 浏览器等基于 Chromium 的浏览器用的是同一个代码。
先判断是网站的问题还是你电脑的问题
网站证书过期是网站的问题,证书有效而本机报错是你设备的问题。先别动自己的电脑,打开 SSL 检测,或者运行:
curl ssl.sh/example.com
- 检测结果显示证书已过期:网站的问题。访客只能等,或者通知网站方;站长直接看下面“站长怎么修”。
- 检测结果显示证书有效:问题在你的设备上。看看报错那台设备的日期时间:主板电池没电导致开机时间回到 2000 年前后、手机关了“自动设置时间”、虚拟机从很久以前的快照恢复,都会让所有 HTTPS 网站一起报这个错。
一个简单判断:所有 HTTPS 网站同时报错,基本是你设备的时间或软件问题;只有一个网站报错,基本是那个网站的问题。
原因
证书过期最常见,其次是访客设备的时间不对。
1. 证书过期了(最常见)
自动续期任务失败、新证书签下来了但没部署,或者部署了但 Web 服务没重载。用下面的命令确认:
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 在“系统设置 → 通用 → 日期与时间”里打开自动设置。手机打开“自动确定日期和时间”。详细步骤见 系统时间错误导致的证书报错。
3. 证书还没生效
刚签发几分钟的证书,在时钟慢了几个小时的设备上会被判定为“尚未生效”。CA 通常会把 notBefore 往前挪一点来容忍小误差,所以这种情况主要出现在时间差得比较多的设备上。
4. 某台服务器或某个节点还在用旧证书
负载均衡、多台源站或 CDN 后面,只要有一台没更新,就会出现“刷新一下好了、再刷新又报错”。逐个 IP 测:
curl -v --resolve example.com:443:203.0.113.10 https://example.com/ -o /dev/null
5. 证书链里有过期的中间证书
服务器发出的中间证书是旧版本时,部分客户端会沿着它构建证书链然后失败。用 证书链工具 重新生成完整链,替换掉旧的 bundle 文件。
在各浏览器/系统上的样子
Chromium 内核的浏览器都显示 NET::ERR_CERT_DATE_INVALID,Firefox 把过期和尚未生效分成两个代码。
| 浏览器 | 显示内容 |
|---|---|
| Chrome / 360 极速模式 / QQ 浏览器 | “您的连接不是私密连接”,下方有 NET::ERR_CERT_DATE_INVALID |
| Edge | “你的连接不是专用连接”,同样的错误代码 |
| Firefox | “警告:面临潜在的安全风险”,代码是 SEC_ERROR_EXPIRED_CERTIFICATE 或 MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE |
| Safari(Mac、iPhone) | “此连接非私人连接”,查看证书会显示已过期 |
| 安卓上的 Chrome | 和电脑版一样;时间明显不对时会直接提示“您的时钟慢了”或“您的时钟快了” |
Chrome 确认是设备时间出错时,会显示专门的“时钟慢了/快了”页面。看到这种提示,就去改时间,不用找网站。
站长怎么修
站长要续期证书、重载 Web 服务,并更新 CDN 和负载均衡上的每一份证书。
1. 先看线上实际发的是哪张证书。 用 SSL 检测 或 curl ssl.sh/example.com,能看到到期时间、完整证书链和证书里的所有域名。
2. 续期。 certbot:
sudo certbot renew --cert-name example.com
sudo systemctl reload nginx
acme.sh:
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 要指向完整证书链文件,而不是去年手工复制的那份:
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 天(见 证书有效期时间线),手动续期跟不上这个频率。照着 自动续期 配好自动化,再加一个到期提醒。
常见问题
页面上有“继续前往 example.com(不安全)”,能点吗?
要登录、付款或填写个人信息的网站不要点。证书过期多半只是站长忘了续,但浏览器分辨不出这是疏忽还是有人拿着一张旧的、可能已泄露的证书在冒充网站。启用了 HSTS 的网站,Chrome 不会给出这个按钮。
证书明明没过期,为什么还报 NET::ERR_CERT_DATE_INVALID?
先看电脑或手机的日期,差了几年就会出这个错。时间没问题的话,可能是网站某一台服务器或某个 CDN 节点还挂着旧证书,或者证书链里带了一张过期的中间证书。运行 curl ssl.sh/example.com 看服务器实际发出的证书。
2026 年证书最长能用多久?
2026 年 3 月 15 日起签发的公开证书最长 200 天,2027 年 3 月降到 100 天,2029 年 3 月降到 47 天(CA/浏览器论坛 SC-081)。Let's Encrypt 默认 90 天;阿里云、腾讯云上的免费证书也早已改为 3 个月左右。可以用 有效期计算器 查任意签发日期对应的上限。
清浏览器缓存有用吗?
基本没用。Chrome 每次连接都会重新检查证书日期,跟缓存的网页无关。只有在 Windows 系统自己缓存了旧证书这种少见情况下,“Internet 选项 → 内容 → 清除 SSL 状态”才可能有帮助。