浏览器
MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE:证书尚未生效
MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATEMOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE 的意思是:按照你设备上的时间,这张证书还没到生效的时候。 每张证书都有起始时间(notBefore)和截止时间(notAfter),设备时间早于起始时间,Firefox 就拒绝这张证书。实际遇到时,多半是设备时间错了,而不是证书错了;只有设备时间确实正确时,才是证书生成时起始时间被写到了未来。
Firefox 显示的内容
页面标题是“警告:面临潜在的安全风险”。点开“高级”,Firefox 会解释:“各个网站通过证书证明自己的身份,它们在设定的时间段内有效。example.com 的证书将生效于”某个日期,并列出错误代码。这个代码在 Firefox 里的中文说明是“服务器出示的证书尚未生效。”
Firefox 能判断出是你的时钟有问题时,可能会改为显示“您的计算机时间有误”,提示你到系统设置里更正日期、时间和时区。
同类代码 MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE 的说明是“用来颁发此服务器证书的一个证书尚未生效。”,意思是证书链里的中间证书或根证书起始时间在未来。
先判断是设备的问题还是网站的问题
多个网站同时报日期错误,是你的设备时间错了;只有一个网站报错,才可能是证书的问题。打开两三个平时常用的大网站,如果都报和日期有关的错误,这些网站都不用修;如果只有一个网站报错,就看错误页上写的生效日期,和当前真实的北京时间(换算成 UTC 要减 8 小时)对比。生效时间比现在晚几个小时甚至几天,说明网站方签发或生成证书时机器时间不对,只能由他们来修。
常见原因(按出现频率排序)
4 种原因里,前两种是设备时间慢了,后两种是证书或上级 CA 证书的起始时间被写到了未来。
1. 设备时间慢了
典型情况有:主板纽扣电池没电,每次断电后日期都会回到出厂时间;新买或刚恢复出厂设置的设备还没同步时间;虚拟机从很久以前的快照恢复;为了延长某个软件的试用期手动改了日期。很多 HTTPS 网站同时打不开,基本就是这个原因。
Windows 和 Linux 双系统的电脑还有一个国内用户常碰到的问题:Windows 默认把主板时钟当作本地时间,Linux 默认当作 UTC,两边来回切换后,时间会差出整整 8 小时。刚签发不到 8 小时的证书在“慢了 8 小时”的系统里就会报尚未生效。开启自动校时后切换系统再检查一次,或者用 timedatectl set-local-rtc 让两边对主板时钟的理解保持一致。
把设备时间和错误页上的生效日期对照一下。电脑上可以用命令查看当前 UTC 时间:
date -u
2. 证书刚签发,你的时间只慢了一点
刚续期的证书从签发那一刻才生效,设备时间慢几分钟或几小时,就会在这段时间内被拒绝。公共 TLS 证书从 2026-03-15 起最长只有 200 天,一些 ACME 配置档签的是 45 天证书,续期越频繁,时间偏慢的设备遇到“新鲜”证书的机会就越多。
3. 证书是在时间不对的机器上生成的
路由器、NAS、摄像头等设备常在第一次开机时自己生成自签名证书,那时还没来得及同步时间;如果设备时间偏快,证书的起始时间就落在了未来。时间漂移的内部 CA 服务器也会出同样的问题。查看证书日期:
openssl s_client -connect 203.0.113.10:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -startdate -enddate
4. 上级证书尚未生效
内部 CA 的证书被设成了未来的日期,或者新的中间证书在生效前就部署上线了,会出现 ..._ISSUER_CERTIFICATE 这个变体。用 -showcerts 或 证书解析工具 逐张查看证书链。
怎么修
访客要做的是打开系统的自动时间同步;网站或设备的管理者要先校准服务器时间,再重新生成证书。
Windows: 设置 > 时间和语言 > 日期和时间,打开“自动设置时间”和“自动设置时区”,再点“立即同步”。也可以在管理员命令行里执行:
w32tm /resync
macOS: 系统设置 > 通用 > 日期与时间,打开自动设置日期与时间。
Linux:
sudo timedatectl set-ntp true
timedatectl status
手机: Android 和 iOS 都在系统设置里打开“自动设置日期和时间”和自动时区。
每次关机后时间都会重置的电脑, 更换主板纽扣电池。
网络环境里同步不上默认时间服务器的, 可以改用国内云厂商提供的公共 NTP 服务器,比如阿里云文档里给出的 ntp.aliyun.com。
网站或设备的管理者: 先把服务器时间校准(timedatectl、chronyc tracking),再重新生成或申请证书,让 notBefore 落在过去。自己生成证书的设备,在时间同步后重新生成一次;内部 CA 则用正确日期重新签发 CA 证书并重新部署证书链。
其他浏览器和应用里的时间问题,见 系统时间错误导致的 SSL 报错。
怎么确认已经修好
设备时间和 UTC 相差几秒以内、Firefox 不加例外就能打开页面,就说明已经修好。
date -u或系统时钟和真实 UTC 时间相差不超过几秒。openssl x509 -noout -startdate显示的notBefore早于当前时间。- 在 Firefox 里刷新页面,不添加例外也能正常打开。如果之前添加过例外,到“设置 > 隐私与安全 > 证书 > 查看证书 > 服务器”里删掉。
- 用 SSL 检测 从外部确认网站当前出示的是有效证书。
常见问题
电脑时间是对的,只有一个网站报这个错,怎么办?
那就是证书的起始时间真的在未来。用 证书解析工具 或 openssl x509 -noout -startdate 看起始日期,需要网站方在时间正确的机器上重新签发证书。
可以点“接受风险并继续”吗?
一般不要点。先校准时间,多数情况下所有网站会一起恢复。对于你自己的设备,比如路由器用错误日期生成了证书,核对过证书指纹后添加例外是可以接受的。网银、邮箱、购物网站不要这样做。
为什么网站刚续期完证书就开始报这个错?
新证书从签发那一刻才开始生效,如果你的设备时间慢了,慢的时长超过了证书“年龄”,就会被拒绝。证书有效期越短、续期越频繁,时间偏慢的设备越容易碰上新证书。开启网络自动校时即可。
Chrome、Safari 里同样的问题显示什么?
Chrome 显示 NET::ERR_CERT_DATE_INVALID,有时是“您的时钟慢了”之类的时钟提示页;Safari 提示证书无效。修法完全一样。