刚签发的证书部署上去,一部分用户提示证书尚未生效,服务器上用 openssl 看时间明明是对的。日志里能对上时间点,这种反而好排。

服务器时间比标准时间快了几分钟,签出来的 notBefore 落到了未来,客户端本地时间正常就会判定无效。容器里时钟漂移更常见。这一点先确认清楚,后面就不用反复试。

date -u
openssl x509 -in cert.pem -noout -startdate -enddate
chronyc tracking

「证书未生效」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。

处理上按这个顺序:先对一遍服务器时间,用 ntpdate 或 chronyc 校准,容器要挂宿主机的时钟;重新签发前确认 notBefore 已经过去,别用刚生成就上线的证书;客户端时间不准的也要提示用户校准,这类报错有一半来自用户侧。

结果对不对很好判断,证书起始时间早于当前时间,刷新页面不再提示尚未生效。

作者 9823189