Linux 服务器时间不同步,导致证书过期

你是否遇到过浏览器提示证书过期,但检查证书明明还在有效期内?
这种情况十有八九是服务器时间不同步导致的。
下面我会从零开始,教你彻底搞定Linux服务器的时间校准,顺手解决证书失效的困扰。

先确认时间是不是罪魁祸首

登录服务器后,先看看当前系统时间:

date

再比对一下真实时间(比如手机或电脑)。
如果相差几分钟以上,很可能就是这个问题。
接着检查证书状态:

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates

如果输出显示证书有效日期正常,但服务器本地时间远超出范围,那问题就确认了。

三步让服务器时间恢复正常

第一步:安装时间同步工具

多数Linux发行版已经内置了ntpdatechrony,如果没装,按系统选择:

  • CentOS / RHELyum install -y ntpdate chrony
  • Ubuntu / Debianapt install -y ntpdate chrony

如果你用的是宝塔面板,直接在软件商店里搜索“NTP”或“chrony”安装即可。

第二步:手动同步一次时间

先停止自动同步服务(避免冲突),然后强制校准:

systemctl stop chronyd   # 如果使用chrony
ntpdate -u ntp.aliyun.com

如果ntpdate报错,可以换一个NTP服务器:ntpdate -u ntp.tencent.comntpdate -u cn.pool.ntp.org
同步后再次执行date看时间是否已更新。

第三步:设置时区并开启自动同步

时区错误也会导致证书对比出错。
指定时区为Asia/Shanghai:

timedatectl set-timezone Asia/Shanghai

然后启动时间同步服务并设置开机自启:

  • 使用chrony:
  systemctl start chronyd
  systemctl enable chronyd
  • 使用ntpdate + crontab(简单方式):
  echo "*/30 * * * * /usr/sbin/ntpdate -u ntp.aliyun.com > /dev/null 2>&1" >> /var/spool/cron/root

验证自动同步是否配置成功:

chronyc sources -v   # chrony状态
timedatectl status   # 确认NTP synchronized为yes

避坑指南:这些细节最容易忽略

  1. 防火墙拦截NTP端口:UDP 123端口必须放行。检查命令:
   firewall-cmd --list-all | grep 123

如果被拦截,执行:firewall-cmd --add-port=123/udp --permanent && firewall-cmd --reload

  1. 云平台NTP黑洞:某些云服务器(如AWS、阿里云)默认使用内部NTP服务器,如果你替换成公共服务器可能超时。建议直接使用云平台提供的NTP地址(例如阿里云:ntp.aliyun.com)。
  2. 硬件时钟(RTC)未更新:同步系统时间后,记得把时间写入主板CMOS:
   hwclock -w

否则重启后时间会复原。

  1. 证书验证仍报错:如果时间已经校正,但浏览器依然报证书过期,请清空浏览器缓存或换隐身模式测试。部分CDN或反向代理需要重启Nginx才能加载新证书。

高频问题速查

Q:为什么同步完时间后,证书还是报错?
A:先检查时区是否匹配证书颁发机构的时区(通常为UTC)。执行timedatectl查看“Time zone”和“RTC in local TZ”。建议统一设置为Asia/Shanghai或UTC,证书验证不受时区影响,但服务器时间偏差不能超过几分钟。

Q:没有root权限能同步时间吗?
A:普通用户无法执行ntpdatetimedatectl,需要联系管理员授权或使用sudo

Q:ntpdate命令找不到怎么办?
A:安装ntpdate包即可。另外部分新版系统不再预装ntpdate,你可以改用chrony -q或者timedatectl set-ntp true

验证成果:证书彻底恢复正常

再次执行最初的两条命令:

date
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates

如果当前时间落在证书的“notBefore”和“notAfter”之间,就说明问题解决了。
建议持续观察一周,确认自动同步稳定运行。

如果你正在处理 Linux 服务器时间不同步,导致证书过期,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
用大模型写运维配置,导致权限配置错误
下一篇
宝塔面板多站点域名配置错误,导致跳转异常
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意