排错指南

证书还没到生效时间:多半是时钟不对

证书的生效时间还没到,被判定为无效。

证书上有两个时间:生效(notBefore)和到期(notAfter)。当前时间早于生效时间,验证方就会拒绝它——和过期一样彻底。

但证书真的「签早了」是极少数情况。绝大多数时候是某一端的时钟不对,而且往往是验证方那一端。

先看是谁的时间不对

看证书上的生效时间,和本机时间比
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -dates
date -u
情况含义
本机时间明显偏早客户端时钟错了——最常见
本机时间正确、生效时间在未来证书确实签早了,或者拿错了文件
只有部分客户端报错那些客户端的时钟不对

时钟为什么会偏

  • 没装或没跑 NTP:虚拟机、容器、嵌入式设备最常见。
  • 掉电后时间回退:没有电池的设备重启会回到出厂时间。
  • 时区当成了时间:配置里写错时区导致偏移若干小时,证书刚签发时正好卡在窗口里。
  • 镜像里固化了旧时间:构建镜像时的时间被带进了运行环境。
同步时间
timedatectl set-ntp true      # systemd
chronyc makestep              # chrony
ntpdate -u pool.ntp.org       # 老系统

证书确实签早了

少数 CA 会把生效时间设在签发时刻之前几小时,以容忍客户端时钟误差;也有相反的情况。如果确认本机时间正确而证书生效时间在未来,通常是:

  • 部署了还没到生效时间的续期证书——续期提前签好,但提前部署了。等到生效时间即可,或者先回退到当前这张。
  • 拿错了文件:把另一个环境或另一次签发的证书发上去了。核对序列号。

常见问题

检测一下你自己的域名

免登录,一次真实的 TLS 握手,直接给出结论:还有多少天到期、证书链是否完整、是否包含这个域名。

需要一张新证书?本站提供基于 Let's Encrypt 的免费签发,支持泛域名。

了解免费证书

其他排错指南

Last updated on