注: 本文为安丫科技刘峰的原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
明明网络是通的,官方源也没问题,一条再普通不过的 dnf install 却死活执行不了。
报错信息看起来“高深莫测”:SSL certificate problem: certificate is not yet valid
很多人第一反应是:
软件源挂了?
HTTPS 证书问题?
防火墙、代理又出幺蛾子了?
但真相往往更残酷——不是网络,不是源,也不是 dnf,而是你的服务器“时间错了”。
这篇文章,我们就通过一次真实的麒麟 Linux 排错案例,带你从现象走到根因,彻底搞清楚这个“看不见却最致命”的系统级问题。
我们的任务是在一台麒麟Linux v11服务器上,为编译最新版的PostgreSQL做准备,需要安装 liburing-devel 开发包以启用高性能的 io_uring 特性。
我们执行了再普通不过的安装命令:
[root@anyatech03 ~]# dnf install liburing-devel
然而,系统并未如预期那样开始下载安装,而是返回了一段令人困惑的错误信息:
Kylin Linux Advanced Server 11 - Os 0.0 B/s | 0 B 00:00Errors during downloading metadata for repository 'v11-adv-os': - Curl error(60): SSL peer certificate or SSH remote key was not OK for https://updates.kylinos.cn/.../repomd.xml [SSL certificate problem: certificate is not yet valid]Error: Failed to download metadata for repo 'v11-adv-os': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
错误信息的核心似乎指向了 Curl error (60) 和 SSL certificate problem。
根因分析:解读“证书尚未生效
(certificate is not yet valid)”
在排除了网络和服务器可用性问题后,我们必须聚焦于错误信息本身。SSL certificate problem: certificate is not yet valid 是解开谜题的唯一钥匙。
为了理解这个错误,我们必须了解SSL/TLS证书是如何工作的。
每一个由权威机构签发的证书,都包含一个“有效期” (Validity Period),它由两个时间戳定义:
Not Before (生效日期)
证书从这个时间点开始才被认为是有效的。
Not After (失效日期)
证书在这个时间点之后将被视为过期。
这个错误就像你拿着一张生效日期是“明天”的电影票,却想在“今天”就进场看电影。
检票员(你的服务器 dnf/curl 程序)检查了票(SSL证书)后,会告诉你:“抱歉,您的票还没到生效时间,我不能让您进。”
当你的服务器(客户端)尝试通过 HTTPS 连接到麒麟的软件源服务器时,它会收到对方的SSL证书。
然后,它会用自己当前的系统时间去和证书的有效期进行比对。
certificate is not yet valid 这个错误的确切含义是:客户端(你的服务器)的系统时间,早于所收到SSL证书的 Not Before 生效日期。
唯一的合理解释是:我们的服务器系统时间不正确,并且被设置到了一个过去的时间点。
有了明确的假设,验证就变得异常简单。
我们只需要在服务器上执行一个命令:
[root@anyatech03 ~]# dateWed Oct 2202:15:30 CST 2025
假设真实的当前时间是 2025年10月22日,而如果你的服务器显示的是 2024年 或者几个月前的时间,那么你就找到了确凿的证据。
在新装的虚拟机或长期未同步时间的物理机上,这种情况非常常见。
方案 A:治本之策——修正并同步系统时间 (强烈推荐)
chrony 是现代Linux系统上用于网络时间协议(NTP)同步的首选工具。
“鸡生蛋”问题:如果因为证书错误导致 dnf 无法安装 chrony,请先执行下面的方案B临时安装 chrony,然后再继续此步骤。
sudo systemctl start chronydsudo systemctl enable chronyd
该命令会立即与NTP服务器进行一次时间同步,而不是等待 chrony 缓慢调整。
再次执行 date 命令,确认时间已经与当前标准时间同步。
[root@anyatech03 pgtest]# dateTue Jan 1311:47:14 AM CST 2026
在系统时间正确后,dnf 的SSL验证将顺利通过。
sudo dnf install liburing-develylin Linux Advanced Server 11 - Os 7.5 kB/s | 3.8 kB 00:00Kylin Linux Advanced Server 11 - Updates 9.9 kB/s | 3.0 kB 00:00Dependencies resolved.==================================================================================================================================== Package Architecture Version Repository Size====================================================================================================================================Installing: liburing-devel x86_64 2.3-1.ky11 v11-adv-os 152 kInstalling dependencies: liburing x86_64 2.3-1.ky11 v11-adv-os 23 kTransaction Summary
方案 B:应急方案——临时禁用SSL验证 (不推荐,仅供临时使用)
此方法会跳过对软件源服务器身份的验证,使你的系统暴露在潜在的中间人攻击风险之下。
仅用于在无法立即修复时间问题时的紧急情况。
dnf -y install lrzsz --setopt=sslverify=false
此命令会告诉 dnf 在本次操作中忽略SSL证书的任何问题。
操作完成后,请务必尽快实施方案A,以恢复系统的安全性。
这次排错的起点,只是一条失败的 dnf install。
但真正暴露出来的,却是一个被无数运维人员忽视的事实:
在 Linux 世界里,时间不是“辅助信息”,而是信任体系本身。
SSL/TLS 校验、软件仓库访问、Kerberos 认证、分布式一致性、日志取证……
几乎所有“看起来很高级”的系统能力,都建立在一个最朴素的前提之上——系统时间必须准确。
所以,比“会装软件”更重要的,是在服务器初始化阶段就把 chrony / NTP 同步 当作基础设施的一部分。
很多疑难杂症,其实并不复杂,只是我们离系统底层,站得太远了。
下一次,当你再看到certificate is not yet valid这样的错误时,希望你能第一时间想到:先看看时间,再谈安全。
大家好,我是刘峰,安丫科技创始人 & 数据库技术高级讲师,专注于 PostgreSQL、国产数据库运维与迁移、数据库性能优化 等方向。
作为 PG中国分会官方授权讲师、PostgreSQL ACE 讲师认证专家,我长期活跃在一线项目实战中,拥有 10年以上大型数据库管理与优化经验,曾深度参与电信、金融、政务等多个行业的数据库性能调优与迁移项目。
欢迎关注我,一起深入探索数据库的无限可能,技术交流不设限!
📌 觉得有收获的话,记得点赞、收藏、转发支持一下哦,别忘了关注我获取更多数据库干货~
无论你是业务系统的技术负责人,还是数据部门的第一响应人,我们都能为你提供可靠的支持:
数据库类型支持
Oracle / MySQL / PostgreSQL / SQL Server 等主流数据库
核心服务内容
性能优化 / 故障处理 / 数据迁移 / 备份恢复 / 版本升级 / 补丁管理
系统性支持
深度巡检 / 高可用架构设计 / 应用层兼容评估 / 运维工具集成
专项能力补充
定制课程培训 / 甲方团队辅导 / 复杂问题协作排查 / 紧急救援支持
📮 如果你有一张删不掉的表、一个跑不动的查询,或者一场说不清的升级风险,欢迎来找我们聊聊。
关键词回复(可见相应文章):
oracle、mysql、pg、postgresql、sql、性能优化、故障处理、数据迁移、备份恢复、版本升级、补丁管理、深度巡检、解决方案、架构设计......
动动你的手指
给【安呀智数据坊】加个星标吧~
这样你就不会丢下我啦~