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,输入 cmd 或 powershell,然后按 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 证书。

