在服务器运维过程中,经常需要确认 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 服务或浏览器,适用于远程服务器、容器环境及自动化运维场景。