证书验证失败主因是ca-certificates缺失、系统时间错误或镜像站证书链异常;应优先检查重装ca-certificates,校准时间,再排查镜像证书链。

Certificate verification failed: The certificate is NOT trusted 这类错误不是网络不通,而是系统无法信任软件源的 HTTPS 证书。核心原因就三个:缺 ca-certificates、系统时间错、或镜像站证书链异常。直接换 HTTP 源能绕过,但会暴露软件包被篡改的风险,不推荐。
检查并重装 ca-certificates 包
这是最常见也最该优先验证的一环。很多精简系统(如某些 Docker 镜像、最小化安装的 Kali/Ubuntu)压根没装这个包,导致所有 HTTPS 源都校验失败。
- 运行
dpkg -l ca-certificates确认是否已安装;若无输出或显示uninstalled,说明缺失 - 临时切到 HTTP 源(仅用于这一步):
sudo sed -i 's|https://|http://|g' /etc/apt/sources.list - 执行
sudo apt update && sudo apt install --reinstall ca-certificates - 立刻切回 HTTPS:
sudo sed -i 's|http://|https://|g' /etc/apt/sources.list
校准系统时间与时区
SSL/TLS 证书有明确有效期,系统时间偏差超过几分钟就会触发 “NOT trusted” 错误——哪怕证书本身完全合法。BIOS 电池老化、虚拟机挂起后恢复、或未配置 NTP 都会导致此问题。
- 用
date查当前时间,和timedatectl status对比是否启用 NTP 同步 - 若未启用,运行
sudo timedatectl set-ntp true;若已启用但时间仍不准,手动强制同步:sudo systemctl restart systemd-timesyncd - 验证结果:
timedatectl status | grep "System clock synchronized"应为yes
确认镜像源证书链是否完整
少数国内镜像(尤其非官方维护的二级镜像)可能使用自签名证书、或未正确配置中间 CA,导致系统无法构建信任链。这不是你本地的问题,但你能快速识别并绕过。
- 用
curl -vI https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/noble/InRelease 2>&1 | grep "subject:"查看证书主体;正常应含O = "Tsinghua University"或类似可信组织名 - 若报
SSL certificate problem: unable to get local issuer certificate,说明镜像站证书链不全 - 此时可临时信任该站点(仅限可信镜像):
echo "Acquire::https::mirrors.tuna.tsinghua.edu.cn::Verify-Peer \"false\";" | sudo tee /etc/apt/apt.conf.d/99-no-verify - 注意:该配置仅禁用对特定域名的证书校验,不影响其他 HTTPS 请求
真正麻烦的不是证书错,而是把 ca-certificates 和系统时间这两个基础项当成“应该默认好”的假设。一旦它们出问题,所有 HTTPS 源都会连带失效,且错误提示毫无指向性——你得先信它真坏了,再动手查,而不是一上来就改源或关验证。


















