bg-tutorials

如何使用 OpenSSL 检查 SSL 证书到期日期

SSL 证书具有有限的有效期,必须定期续期才能继续受到浏览器信任。2026 年 3 月 15 日之后签发的公共证书有效期限制为 200 天,最长有效期将在2027 年 3 月 15 日降至 100 天,并在2029 年 3 月 15 日降至 47 天。准确了解证书的到期时间有助于您按时续期,避免服务中断。

本指南将向您展示如何使用 OpenSSL 检查证书到期时间:针对在线服务器、本地文件,以及如何检查证书是否即将到期。

快速解答:

针对在线网站,运行:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate. 

针对证书文件,运行:

openssl x509 -in your_certificate.pem -noout -enddate. 

notAfter 的值即为到期日期。

方法一:检查在线服务器上的证书

此方法连接到正在运行的网站并读取其提供的证书,无需证书文件。它适用于任何可访问的主机(远程域名,或使用正确端口的本地服务器 localhost)。

在 Linux 和 macOS 上

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -enddate

yourdomain.com 替换为您的实际域名。由于 macOS 是类 Unix 系统(其内置的 openssl 为 LibreSSL,支持这些选项),因此命令在 macOS 上完全相同。

在 Windows 上

  • 打开命令提示符或 PowerShell(按 Win + R,输入 cmdpowershell,然后按 Enter)。
  • 运行:
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>nul | openssl x509 -noout -enddate

在 Windows 上,使用 2>nul 代替 2>/dev/null 来丢弃错误信息。

方法二:从 PEM 文件检查证书

PEM 文件是一种 base64 编码的证书,以 —–BEGIN CERTIFICATE—– 开头,以 —–END CERTIFICATE—– 结尾。当您的磁盘上有证书文件时,请使用此方法。

在 Linux 和 macOS 上

切换到存放证书的文件夹,然后读取其到期日期(将 your_certificate.pem 替换为您的文件名):

cd /path/to/your/certificate/directory
openssl x509 -in your_certificate.pem -noout -enddate

在 Windows 上

cd C:pathtoyourcertificatedirectory
openssl x509 -in your_certificate.pem -noout -enddate

请确保 OpenSSL 已安装并已添加到 PATH 中;否则,请指定 openssl.exe 二进制文件的完整路径。

查看两个日期,或检查证书是否即将到期

要同时查看签发日期(notBefore)和到期日期(notAfter),请使用 -dates 代替 -enddate

openssl x509 -in your_certificate.pem -noout -dates

要检查证书是否将在指定时间窗口内到期,请使用 -checkend 并指定秒数(此处 2592000 秒 = 30 天):

openssl x509 -in your_certificate.pem -noout -checkend 2592000

它会输出 Certificate will not expire(并以状态码 0 退出)或 Certificate will expire(状态码 1)——这使其非常适合用于监控脚本和 cron 任务。

理解命令与输出

以在线服务器命令及其输出为例:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate

输出:

notAfter=Sep 15 23:59:59 2026 GMT

以下是每个部分的作用:

  • echo | — 发送空输入,使命令无需等待交互即可完成。
  • openssl s_client — 向服务器建立 SSL/TLS 连接。
  • -servername example.com — 设置服务器名称指示(SNI),当服务器为不同域名托管多个证书时必须使用。
  • -connect example.com:443 — 要连接的主机和端口(端口 443 是标准 HTTPS 端口)。
  • 2>/dev/null(Linux/macOS)或 2>nul(Windows)— 丢弃错误信息,仅显示相关输出。
  • | openssl x509 -noout -enddate — 将证书通过管道传入 x509 工具;-noout 抑制 PEM 输出,-enddate 仅打印到期日期。
  • notAfter=… — 证书停止有效的日期和时间。

自动化:停止手动追踪日期

与其手动检查到期日期(尤其是在有效期缩短至 47 天的情况下),您可以使用 ACME 作为证书即服务(CaaS)。它负责处理域名验证、安装证书,并在证书到期前自动续期,让您的网站无需人工干预即可保持受信任状态。

总结

OpenSSL 只需一行命令即可检查证书到期时间——通过 s_client 检查在线服务器,或通过 x509 -enddate 检查文件,而 -dates-checkend 则可添加签发日期和即将到期检查。notAfter 字段会告诉您确切的续期时间,帮助您避免服务中断。当您准备好续期时,欢迎浏览我们的 SSL 证书

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.