在服务器运维过程中,经常需要确认 SSL 证书是否即将过期。
尤其是在使用 Let’s Encrypt 自动签发证书的环境中,如果未及时发现证书失效,可能导致 HTTPS 服务中断。

本文记录一种 完全基于命令行 的证书有效期检查方法,适用于任何 Linux 系统。


一、证书文件结构

典型的证书目录如下:

ssl_certificates/
├── fullchain.pem
└── privkey.pem

说明:

  • fullchain.pem:完整证书链(服务器证书 + 中间证书)
  • privkey.pem:私钥文件

查看证书有效期时,仅需要 fullchain.pem


二、查看证书生效时间与过期时间

使用 openssl

openssl x509 -in fullchain.pem -noout -dates

示例输出:

notBefore=Feb 27 04:12:34 2026 GMT
notAfter=May 28 04:12:33 2026 GMT

字段含义:

字段含义
notBefore证书开始生效时间
notAfter证书过期时间

其中 notAfter 是最需要关注的字段。


三、仅查看证书过期时间(常用)

如果只关心证书何时失效:

openssl x509 -in fullchain.pem -noout -enddate

输出示例:

notAfter=May 28 04:12:33 2026 GMT

适合脚本检测或快速人工确认。


四、查看完整证书信息

当需要排查 HTTPS 或 TLS 问题时,可以查看完整证书内容:

openssl x509 -in fullchain.pem -text -noout

可获得:

  • 证书签发机构(Issuer)
  • 域名信息(SAN)
  • 公钥算法
  • 指纹信息
  • 有效期
  • 扩展字段

该方式常用于反向代理或 TLS 握手问题分析。


五、计算证书剩余有效天数

服务器自动化运维中,通常需要判断证书还剩多少天过期。

可使用:

echo $(( \
($(date -d "$(openssl x509 -enddate -noout -in fullchain.pem | cut -d= -f2)" +%s) \
- $(date +%s)) / 86400 ))

示例输出:

58

表示证书还有 58 天到期


六、实际运维建议

在长期运行的服务器环境中,建议:

  • 定期检查证书剩余天数
  • 在剩余 30 天以内触发更新
  • 配合自动续期工具使用
  • 将检测脚本加入定时任务

这样可以避免 HTTPS 服务因证书过期而中断。


七、总结

Linux 下检查 SSL 证书有效期的核心工具只有一个:

openssl

常用命令可简化为:

目的命令
查看有效期openssl x509 -noout -dates
查看过期时间-enddate
查看全部信息-text
剩余天数计算date + openssl

该方法无需依赖 Web 服务或浏览器,适用于远程服务器、容器环境及自动化运维场景。


Leave a Reply

Your email address will not be published. Required fields are marked *