现象:NAT 模式下虚拟机"能上网",但访问 HTTPS、
apt update、安装软件时频繁报 证书错误 。高概率根因:虚拟机时间不准 (快/慢),导致 TLS 证书校验失败。
目标:把时间修正并保持自动同步。
0. 快速确认是不是"时间导致证书错误"
0.1 看当前时间与同步状态
bash
date
timedatectl
重点看:
- Local time 是否明显不对
- Time zone 是否正确
- System clock synchronized: yes/no
0.2 常见报错关键词(出现其一就高度怀疑时间问题)
- certificate is not yet valid
- certificate has expired
- Release file is not valid yet
- x509: / SSL certificate problem
1. 先把时区设对(最容易漏)
时区不对,时间很容易"看起来正常但仍会出错"。
中国:
bash
sudo timedatectl set-timezone Asia/Shanghai
timedatectl
2. 启用系统自带的 NTP(推荐:systemd-timesyncd)
bash
sudo systemctl enable --now systemd-timesyncd
sudo systemctl restart systemd-timesyncd
timedatectl
查看同步日志(可选):
bash
sudo journalctl -u systemd-timesyncd --no-pager -n 50
3. 如果同步还是失败:换 NTP 服务器(国内更稳)
编辑配置:
bash
sudo nano /etc/systemd/timesyncd.conf
写入/修改为(示例:阿里云 + fallback):
bash
[Time]
NTP=ntp.aliyun.com time1.aliyun.com time2.aliyun.com time3.aliyun.com time4.aliyun.com
FallbackNTP=pool.ntp.org
重启并验证:
bash
sudo systemctl restart systemd-timesyncd
timedatectl
4. 应急方案:手动"拉一次时间"(只做救急)
安装工具:
bash
sudo apt update
sudo apt install -y ntpdate
手动同步(任选一个):
bash
sudo ntpdate -u ntp.aliyun.com
# 或
sudo ntpdate -u pool.ntp.org
验证:
bash
date
timedatectl
5. 再验证证书错误是否消失
bash
sudo apt clean
sudo apt update
HTTPS 验证(任选):
bash
curl -I https://http.kali.org
curl -I https://www.google.com
6. 常见坑(只列关键点)
- 虚拟机长时间暂停/睡眠后时间漂移:恢复后先跑 timedatectl 看同步状态
- 网络里有代理/VPN:先临时取消代理环境变量再测试 NTP
- 只改 date 不开 NTP:短期好,过会又漂
7. 最小复盘清单
bash
date
timedatectl
sudo timedatectl set-timezone Asia/Shanghai
sudo systemctl enable --now systemd-timesyncd
sudo systemctl restart systemd-timesyncd
sudo nano /etc/systemd/timesyncd.conf
sudo systemctl restart systemd-timesyncd
sudo apt update
curl -I https://http.kali.org