系统时间错乱导致 SSL 证书错误?一个命令破局
问题现象
AlmaLinux 8.1 服务器,BIOS 时间不对,想通过宝塔面板同步时间。结果安装 chrony 时遇到了这个错误:
Curl error (60): Peer certificate cannot be authenticated with given CA certificates
SSL certificate problem: certificate is not yet valid更离谱的是,检查系统发现:
Last metadata expiration check: -2784 days ago时间差了将近 8 年,SSL 证书自然认为 "还没到生效时间"。
典型的鸡生蛋问题:因为时间不对 → 无法通过 SSL 验证 → 下载不了软件包 → 装不了时间同步工具 → 时间一直不对。
破局思路
核心思路就一句话:先手动设一个大概正确的时间,装上 chrony,再通过网络精确同步,最后写回 BIOS。
手设时间 → 装 chrony → 网络同步 → 写回 BIOS第一步:手动设置系统时间
用 date 命令手动设一个接近当前的时间:
sudo date 060314302024.00格式解释:月月日日时时分分年年.秒秒
比如 060314302024.00 就是 6月3日 14:30:00 2024年。设到哪一年不重要,只要在 SSL 证书的有效期内就行(2020~2029 基本都安全)。
如果你不知道当前时间,掏出手机看一眼就行,精确到天就够了。
验证一下:
date输出应该变成你设的时间了。
第二步:安装 chrony
时间对了,SSL 验证就能过,直接安装:
sudo dnf install chrony -yAlmaLinux 8/9 默认使用 chrony 作为时间同步服务,比老旧的 ntpdate 更精确、更稳定。
第三步:启动并配置国内 NTP 服务器
# 启动并设为开机自启
sudo systemctl enable --now chronyd
# 检查运行状态
sudo systemctl status chronyd状态应该是 active (running)。
然后编辑配置文件,用国内的 NTP 服务器(默认的国外服务器太慢):
sudo vi /etc/chrony.conf找到以 pool 开头的那一行,注释掉,然后添加:
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburstiburst 参数的作用是:初始同步时快速发送多个请求,加速第一次同步。
保存退出后重启服务:
sudo systemctl restart chronyd第四步:强制立即同步
sudo chronyc -a makestep查看同步状态:
chronyc sources -v输出中如果有一行前面是 ^*,就说明已经找到了同步源,正在同步。
再验证系统层面:
timedatectl重点关注两行:
System clock synchronized: yes—— 系统时间已同步NTP service: active—— NTP 服务运行中
第五步:写回 BIOS(最关键的一步)
系统时间同步好了还不够,必须写到硬件时钟(即 BIOS 时间),否则重启后时间又回去了。
sudo hwclock --systohc这条命令的意思:把系统时间(System Clock)写入硬件时钟(Hardware Clock)。
验证硬件时间是否已更新:
sudo hwclock --show输出的时间应该和 date 命令输出的系统时间一致。
完整命令清单
把以上步骤浓缩成一行都不落的完整流程:
# 1. 手动设一个近似正确的时间
sudo date 060314302024.00
# 2. 安装 chrony
sudo dnf install chrony -y
# 3. 启动服务
sudo systemctl enable --now chronyd
# 4. 编辑配置(可选,建议换国内源)
sudo vi /etc/chrony.conf
# 5. 重启服务
sudo systemctl restart chronyd
# 6. 强制同步
sudo chronyc -a makestep
# 7. 验证同步状态
chronyc sources -v
timedatectl
# 8. 写回 BIOS
sudo hwclock --systohc
# 9. 验证硬件时间
sudo hwclock --show
date通过宝塔面板操作
如果你的 chrony 已经配置好并正常运行,宝塔面板也提供时间同步功能:
- 登录宝塔面板
- 左侧菜单 → 面板设置
- 找到「时间设置」或「同步时间」
- 点击立即同步,选择时区为 Asia/Shanghai
宝塔面板本质上也是调用系统的 chrony 命令,所以底层配置好了,面板一点就通。
为什么会出现这个问题
服务器主板的 BIOS 电池没电了。服务器长时间断电后重新开机,BIOS 时间会重置到主板出厂日期(比如 2016 年、2020 年)。系统启动时读取了这个错误的时间,然后所有依赖 SSL 的操作全部报错。
这不是操作系统的问题,是物理硬件的常见现象。
踩坑总结
| 坑 | 表现 | 解决 |
|---|---|---|
| SSL 证书时间错误 | curl error 60, yum/dnf 无法下载 | 手动 date 设时间打破死循环 |
| 忘记写回 BIOS | 重启后时间又错了 | 一定要执行 hwclock --systohc |
| 国外 NTP 慢 | 同步卡住或超时 | 换成阿里云 ntp.aliyun.com |
| 防火墙挡端口 | chrony 无法连接服务器 | 放行 UDP 123 端口 |
一句话总结
时间错了 → SSL 过不去 → 装不了软件 → 时间一直错。手动 date 设一下是破局关键,设完装 chrony,同步完一定要 hwclock --systohc 写回 BIOS。三步走完,这辈子不会再为时间发愁。