如何解决服务器CA证书过期的问题

一、问题的提出

最近在学习VPS,在Linux系统里给服务器安装某项服务时,在服务的log里看到下面的错误信息:

failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2023-12-25T04:42:38-05:00 is after 2021-09-30T14:01:15Z, result: , status code: 0

经过分析,发现上面的错误是由于系统证书的时间比服务器当前的时间要早,也就是过期了,所以才报错。

在安装acme时,同时遇到了下面的报错,进一步确认了CA certs过期的问题。

curl https://get.acme.sh | sh -s email=XXX@126.com % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (60) The certificate issuer's certificate has expired. Check your system date and time. More details here: http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.

二、问题的解决

我在网上群里提问,有大佬提出是系统证书较老,建议更新新系统,我的系统是CentOS,安装时的确不是最新版。如果重新安装系统,那么我之前安装的程序就白费了,那么就只能更新证书来解决了。

于时,我把上面第二个错误信息交给ChatGPT,并明确这是服务器里面的报错信息。ChatGPT很快给出了解答:

错误提示表明 curl 在执行时遇到了 SSL 证书验证问题,具体原因是证书颁发机构(CA)的证书已经过期。这可能是因为你的系统时间不准确,也可能是因为使用的 curl 版本不包含最新的 CA 证书捆绑文件。 以下是解决问题的一些建议: 检查系统时间: 确保你的服务器上的系统时间是准确的。

你可以使用以下命令来同步系统时间:

sudo ntpdate -u time.nist.gov 如果你使用的是 systemd,

也可以使用以下命令: sudo timedatectl set-ntp true 更新 CA 证书捆绑文件:

在某些情况下,curl 使用的 CA 证书捆绑文件可能已过期。你可以手动更新 CA 证书。在很多系统中,CA 证书捆绑文件通常位于 /etc/ssl/certs/ca-certificates.crt。你可以使用系统包管理器安装最新的 CA 证书。

例如,在 Debian 或 Ubuntu 系统上,可以使用以下命令: sudo apt-get update sudo apt-get install --reinstall ca-certificates

在 CentOS 或 RHEL 系统上,可以使用以下命令: sudo yum update ca-certificates 使用 -k 或 --insecure 选项: 如果你确定连接目标不涉及安全风险,你可以使用 -k 或 --insecure 选项来忽略证书验证。

请注意,这会使通信不再安全,只有在你能够确认连接安全的情况下使用。 curl -k https://get.acme.sh | sh -s email=cflpd@126.com 请根据你的具体情况选择其中一种或多种方法来解决问题。确保在修改系统设置之前,了解可能的安全风险。

根据上面的回答,最终确认是:证书颁发机构(CA)的证书已经过期。

由于我的是CentOS系统,在检查完服务器时间没有问题的情况下,我采用下面的命令:

复制代码
sudo yum update ca-certificates

最后,终于一键解决了系统证书超期的问题。

三、学后反思

  1. 上面的问题困扰了我两天时间,主要原因是自己对CA证书的理解还不够深入,ChatGPT用的比较少,对于问题的解决只是通过搜索引擎和网上交流平台,对于信息的筛选存在不足。

  2. 以后学习VPS技术,必须要综合搜索引擎、CSDN、ChatGPT等渠道,以便更快地查明问题的所在,并进行快速地分析、判断和处理。

  3. 至于如何发现问题,可以通过log的记录,一项一项地查明,可以复制到搜索引擎搜索,也可以喂给ChatGPT分析,但是要明确一下分析的语境,以免让ChatGPT产生误会。由于Linux是开源的系统,而且网上学习的资源也特别地丰富,所以ChatGPT对于问题的理解、识别、解决都相当地到位,能够快速地给我们一些非常好的思路和建议,因此应该成为技术学习者必备的工具。

相关推荐
Elastic 中国社区官方博客3 分钟前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
云飞云共享云桌面28 分钟前
东莞智能装备工厂数字化实践—研发部门10名SolidWorks设计共享一台云主机流畅设计
服务器·自动化·汽车·负载均衡·制造
专注API从业者38 分钟前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
xingyuzhisuan43 分钟前
稳定性考验:连续跑7天,哪家云主机不重启、不掉线?
服务器·人工智能·gpu算力
jsons11 小时前
给每台虚拟机设置独立控制台密码
linux·运维·服务器
云栖梦泽2 小时前
Linux内核与驱动:14.SPI子系统
linux·运维·服务器·c++
福大大架构师每日一题2 小时前
openclaw v2026.4.24 发布:Google Meet 深度集成、DeepSeek V4 上线、浏览器自动化与插件架构全面升级
运维·架构·自动化·openclaw
yipiantian3 小时前
在Claude项目中实现跨目录访问Skills
linux·运维·服务器
Agent产品评测局3 小时前
生产排期与MES/ERP系统打通,实操方法详解 —— 2026企业级智能体自动化选型与实战指南
java·运维·人工智能·ai·chatgpt·自动化
cen__y3 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言