温馨提示×

linux openssl为何提示过期

小樊
49
2026-09-04 16:47:39
栏目: 云计算

在 Linux 上使用 OpenSSL 时提示“过期”(或类似 certificate expired / not yet valid / verify error),通常不是 OpenSSL 本身过期,而是以下几类原因之一。我按常见程度给你梳理一下:


一、最常见:证书过期(不是 OpenSSL 过期)

OpenSSL 只是工具,真正会“过期”的是 证书

现象示例

openssl verify server.crt
error 10 at 0 depth lookup: certificate has expired

原因

  • 你自己的证书(*.crt / *.pem)到期了
  • 服务器返回的证书到期了
  • 中间证书(Intermediate CA)过期

排查方法

openssl x509 -in server.crt -noout -dates

看:

notBefore = ...
notAfter  = ...   <-- 过期时间

✅ 解决:重新签发 / 续期证书(Let’s Encrypt、内部 CA、厂商证书等)


二、系统 CA 证书过期(非常常见)

Linux 用 /etc/ssl/certs 里的 CA 包验证证书。

典型场景

  • CentOS 7 / RHEL 7 老系统
  • ca-certificates 包太久没更新
  • 老根证书(如 DST Root CA X3)已过期

检查

rpm -q ca-certificates        # RHEL/CentOS
dpkg -l | grep ca-certificates # Debian/Ubuntu

解决

# Debian / Ubuntu
apt update && apt install --only-upgrade ca-certificates

# CentOS / RHEL
yum update ca-certificates

三、系统时间错误(很多人忽略)

OpenSSL 验证证书时间非常严格。

现象

  • 新证书也提示“not yet valid”
  • 或者“expired”

检查时间

date

修复

# 手动设置(示例)
date -s "2026-01-15 10:00:00"

# 或启用 NTP
timedatectl set-ntp true

⚠️ 虚拟机、容器、断电设备极易出现时间回退。


四、你用的是旧版 OpenSSL(兼容性提示)

例如:

  • OpenSSL 1.0.2(已停止支持)
  • 不支持新证书算法(如 ISRG Root X2 / ECDSA)

检查版本

openssl version

典型问题

  • Let’s Encrypt 新根证书不被旧 OpenSSL 信任
  • TLS 1.3 不支持

✅ 解决:升级系统或 OpenSSL(谨慎,系统依赖多)


五、你“以为 OpenSSL 过期”

有时看到的是:

WARNING: can't open config file

OPENSSL_CONF 指向不存在文件

不是过期,是配置问题。


快速自检清单 ✅

  1. openssl version
  2. date
  3. openssl x509 -in cert.pem -noout -dates
  4. ca-certificates 是否最新
  5. 是哪一步提示“过期”(命令?访问网站?编译?)

如果你愿意,可以把完整的报错信息你执行的命令贴出来,我可以直接帮你定位是哪一类问题。

0