怎么查询SSL证书有效期?
查询 SSL 证书有效期,最直接的方法有三种:浏览器查看证书详情、用 OpenSSL 检查服务器实际返回的证书、通过在线检测工具查看公网证书状态。
场景选择上有明确分工:只检查一个网站,浏览器就够用;在服务器上排查证书问题,用 OpenSSL; 检查多个域名或长期监控,用检测工具或脚本。核心字段是 notAfter——X.509 证书的失效时间,判断证书什么时候过期主要看它;notBefore 记录生效时间。
需要注意,查看网站证书时要检查服务器当前实际返回的证书:网站前面有 CDN、负载均衡或反向代理时,浏览器看到的证书可能来自边缘节点而不是源站。OpenSSL 检查务必带 -servername 指定 SNI 域名,避免拿到默认站点的证书。
证书有效期在哪里看
SSL 证书的 Validity 字段记录有效时间范围:notBefore 是开始生效时间,notAfter 是失效时间。例如 notBefore=Jan 15 2026 GMT、notAfter=Jan 15 2027 GMT,表示证书从 2026 年 1 月 15 日开始、2027 年 1 月 15 日结束,过期时间看 notAfter。
查看时要注意看服务器实际返回的证书。网站前面有 CDN、负载均衡或反向代理时,浏览器看到的证书可能来自 CDN 或负载均衡节点,不是源站。
浏览器查看
只想查某个网站的到期时间,浏览器最简单。
Chrome 操作:打开 HTTPS 网站,点击地址栏左侧的网站信息图标,进入"连接是安全的 → 证书有效(或显示证书)",在证书详细信息窗口查看有效期。不同 Chrome 版本界面名称略有变化,Edge、Firefox 操作入口不同但思路一致。
浏览器适合人工检查单个网站。需要确认服务器到底加载了哪张证书,或怀疑 CDN、负载均衡没更新时,用 OpenSSL 更准确。
用 OpenSSL 查看
检查公网域名的证书:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
返回 notBefore 和 notAfter。只关心过期时间:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate
-servername 参数很关键:一台服务器可能部署多个 HTTPS 网站共用 IP,服务器按客户端发送的 SNI 决定返回哪个域名的证书。不带 -servername 时,可能拿到默认站点的证书——同一个 IP,带和不带 -servername 得到的证书可能完全不同,检查具体域名时始终带上。
查看本地证书文件(还没部署的证书):
openssl x509 -in certificate.crt -noout -dates
openssl x509 -in certificate.pem -noout -enddate
DER 编码(常见 .cer 扩展名)指定格式:
openssl x509 -inform DER -in certificate.cer -noout -dates
不确定手里的 .crt、.cer、.pem 是什么格式,用证书有效期在线查询工具检测。
计算剩余天数与自动监控
只看 notAfter 还要自己算。Linux 下用 Shell 脚本:
DOMAIN="example.com"
EXP_DATE=$(echo | openssl s_client \
-servername "$DOMAIN" \
-connect "$DOMAIN:443" 2>/dev/null | \
openssl x509 -noout -enddate | \
cut -d= -f2)
EXP_EPOCH=$(date -d "$EXP_DATE" +%s)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXP_EPOCH - NOW_EPOCH) / 86400 ))
echo "SSL证书剩余约 ${DAYS_LEFT} 天"
做监控时按剩余天数分级告警:剩余 ≤ 30 天常规提醒,≤ 7 天高优先级提醒,已过期立即处理。域名多的企业用自动检测比人工逐个查可靠。
cURL 也可以看证书,但定位不同:curl -vI https://example.com 的 verbose 输出能看到证书相关信息,更适合检查连接能否建立、TLS 握手是否成功、HTTP 响应是否正常、有没有证书验证错误。准确获取 notAfter,用 openssl s_client 加 x509 -noout -enddate 更直接。
常见排查
浏览器和 OpenSSL 看到的时间不一样,最常见原因是时区:证书时间以 UTC/GMT 表示,浏览器按本地时区显示。OpenSSL 显示 notAfter=Jan 15 2027 GMT,换成北京时间要加 8 小时。相差几个小时是时区显示差异,相差整天甚至更久,要检查服务器返回的证书是否一致。
服务器更新证书后查询还是旧证书,优先检查四点:
- Web 服务器没重新加载。Nginx 替换证书后要 nginx -t 并 systemctl reload nginx,只换文件进程还在用旧证书。
- CDN 或负载均衡没更新。公网看到的是最前面节点的证书,源站换了新证书不代表公网立即生效。
- 多台服务器没全部更新。一个域名对应多个后端节点时,不同节点可能返回不同证书。
- SNI 配置错误。OpenSSL 没带 -servername,拿到默认站点证书。
泛域名和多域名证书的有效期查看方式和单域名没有本质区别,都是看 notAfter;区别在检查域名。通配符证书 *.example.com 检查时应直接访问实际子域名:
openssl s_client -servername api.example.com -connect api.example.com:443
确认 api.example.com 当前实际用的是哪张证书。通配符证书的覆盖范围可以参考通配符证书的覆盖范围。
快过期了怎么办
不要等到最后一天。商业证书需要重新申请或续期获得新证书再部署,证书本身不能通过修改 notAfter 延长有效期。更新流程:
检查当前证书 → 申请/续期新证书 → 完成域名验证 → 下载新证书 → 部署到服务器 → 重新加载Web服务 → 检查公网实际证书 → 确认旧证书已替换
部署方法参考新证书部署与重载;更换后出现证书链、域名不匹配或浏览器报错,看证书部署后报错排查;提前规划续签可以看证书采购与续签规划。
常见问题解答
怎么看 SSL 证书还有多少天过期?
最简单的方法是直接在浏览器查看证书有效期。需要精确计算剩余天数时,用 OpenSSL 获取 notAfter 字段,再与当前时间戳做减法。
OpenSSL 显示的 notAfter 是什么意思?
notAfter 是 X.509 证书中的失效时间,即证书有效期的截止时间。判断证书什么时候过期,主要看这个字段。
网站换了新证书,为什么在线检测还是显示旧证书?
重点检查 CDN、负载均衡和多服务器节点是否同步更新,同时确认 Web 服务已重新加载证书。用 OpenSSL 检查时带上 -servername,避免拿到默认站点的证书。
SSL 证书快到期了,可以直接修改有效期吗?
不能。证书的有效期由 CA 签发时确定,不能通过修改证书文件延长。到期前需要重新申请或续期,把新证书部署到服务器。
查询 SSL 证书有效期不复杂:单个网站用浏览器,服务器排查用 OpenSSL,多域名长期监控用工具或脚本。核心字段是 notAfter。对 CDN、负载均衡和多服务器环境,不能只看源站证书,要确认公网实际返回的证书是否已更新;OpenSSL 检查务必带 -servername 避免拿到默认站点证书。域名多时用脚本自动检测,在到期前完成续期和部署。



京公网安备11010502031690号
网站经营企业工商营业执照
















