SSL证书到期这一环节, 是网站安全运维工作里非常核心的部分。因为要是证书一旦过期了, 那就很可能会直接导致浏览器上弹出“不安全”这样的警告提示。不仅如此, 还可能会导致用户对网站的信任感大量流失, 甚至会造成业务被迫中断这样的严重后果。

接下来要介绍这5种查询方法, 它们覆盖了在线工具、浏览器、命令行以及服务器端这些所有的常用场景。这样做是为了帮助管理员朋友能够在尽量短的时间之内, 迅速找到证书的有效期限到底还有多少天。

除了查期限之外, 后面还会附带关于证书到期后该怎么处理, 以及一些常见疑难问题该怎么解决的完整方案, 供大家参考和使用。

在线查询工具

用户可以访问位于gname.xin的SSL证书到期查询页面, 然后在输入框里面输入想要查询的目标域名, 这样系统就会返回关于这个站点的完整的证书相关信息, 这个信息里头包含了证书的颁发日期, 还包括了证书的到期日期, 同时也会有证书的颁发机构是什么, 还有证书的序列号是多少, 以及当前这个证书还剩余多少有效的天数。

另外呢, 这个平台它也是支持批量进行查询工作的,这意味着用户可以在一次操作里面就输入好多个不同的域名SSL证书到期查询, 接下来这个系统会针对每一个域名都单独去执行并且返回相应的结果, 而且那些接近就要到期的或者是已经过期了的证书情况, 在结果里也会特别给标注清楚。

查询结果在检查证书链完整性的时候, 会同时进行检测, 万一发现中间证书不见了, 或者根证书已经被吊销了, 就会清楚地提示出有异常的项, 这种办法根本不需要安装任何客户端软件, 只要你打开浏览器就能进行操作, 很适合站长还有运维人员用这个办法去快速排查多个网站的证书状态是不是正常的。

浏览器直接查看

你可以用 Chrome 浏览器或者 Firefox 浏览器打开你想要访问的那个目标网站, 然后去点那个地址栏左侧的锁型小图标, 接着在下面出现的菜单里选择查看证书这个选项, 又或者是选择证书信息这个选项, 在接下来弹出的详情面板里面, 你会看到有一个栏目是写着有效期的, 这个栏目里会非常清楚地把 Not Before 也就是生效日期以及 Not After 也就是到期日期都标注出来了。

这种方式是没有门槛的一回事, 大家都可以直接上手, 对于单站的这种情形来说,它非常适合用来做快速确认的动作大城群众说事, 可是呢, 它没办法做到批量处理这一件事, 并且每一个浏览器在面对那些快要过期的证书的时候, 通常情况下是不会主动弹出那个预警的窗口的, 所以这个是需要依靠人工的方式来定期地进行检查和核对的。

命令行查询(Linux / macOS)

可以在终端中, 执行下面这些命令,以此来远程地查询出任意一个域名的证书的到期时间。

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

在输出内容中SSL证书到期查询, notBefore这个字段代表的意义是当前证书的颁发日期, 而与之对应的notAfter这个字段所代表的意思则是该证书的到期截止日期。假如说你需要查看存放在本地的证书文件里面的具体信息内容的话, 那么可以直接执行以下命令来实现。

openssl x509 -in /path/to/cert.pem -noout -dates

SSL证书到期查询:5种方法快速查看有效期,附在线工具与处理指南(图1)

这种方法适合让运维人员在服务器上进行批量性的检查操作。大家可以编写脚本来遍历域名列表, 并且配合定时任务工具设置成每天定点执行工作。把过期或者还有7天就到期的证书信息, 通过发送邮件的方式或者企业微信推送的方式来进行告警通知。

服务器端文件检查

登录到Web服务器, 然后把注意力集中在存放证书的那个路径上面去, 对于Nginx来说, 常见的路径是那个/etc/ssl/certs/目录, 而对于Apache来说呢, 常见的路径则是/etc/httpd/ssl/目录, 接下来就可以执行相应的操作了。

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

notAfter=2026-10-21T12:00:00Z, 直接读取日期即可判断剩余天数。

CA颁发机构后台查询

你可以去对应的证书颁发机构的管理控制台, 比如Let's Encrypt、DigiCert、GlobalSign、Sectigo这些平台, 找到证书管理这个区域, 或者看看已签发证书那个列表, 这样你就能把所有证书的到期时间都看清楚了, 域名绑定的信息也有, 吊销的状态也在里面, 而且你可以直接在上面操作续签, 重新把证书下载回来, 或者把证书给吊销掉, 完全不需要再去换别的工具。

到期前处理要点

大家最好提前三十天就把续期的手续办起来, 这样的话, 等到证书真的到期的时候, 就可以避免因为那个 DNS 还有 CDN 的缓存没有来得及把新的信息刷新掉, 从而造成那些用东西的人那边还是在显示旧的证书的情况发生, 也就可以避免出现服务体验不太正常的现象了。

Let's Encrypt颁发的免费证书的有效时长是90天, 必须配置自动续期的脚本, 也就是执行certbot renew这个操作。付费的证书通常有效期会是1年或者3年, 到期前的7天内发送电子邮件提醒这是行业内的标准做法, 建议同时也设置日历上的提醒功能。

等到你更换了那张新的证书之后, 请务必把那个叫做Web服务的东西重新启动一下, 或者是重新加载一下, 这里面的Nginx需要去运行 nginx -s reload 这个操作, 而Apache则需要去运行 apachectl -graceful 这个操作, 然后还必须要把CDN节点里面所缓存的那些东西给清除掉, 只有这样做了以后, 才能确保那张新的证书可以立刻就起作用。

高频疑难与应对

查询结果显示为证书已经过期, 可是该网站依然可以被大家访问到, 这种状况多数是因为内容分发网络或者用户本地设备中的缓存还在向外界提供着旧版本的证书相关数据, 此时大家可以尝试通过同时按下控制键和F5键来强制刷新页面, 也可以直接等待当地存储的暂时生效时长结束后系统自动恢复, 从而就能看到正常的提示说明了。

在执行批量查询的过程当中, 会出现部分域名因为连接超时而导致失败的情况, 此时需要首先去确认DNS解析这一项工作是不是处于正常状态, 具体的操作方法是使用nslookup 域名这个命令, 如果发现DNS解析出现了异常, 那么就直接改用IP地址加上443端口这样的组合方式来连接目标服务器, 以此来对连接进行验证。

因为证书链不完整, 客户端那边出现了报错的情况, 所以需要把中间证书还有根证书全都部署到服务器的证书链里面去, 不然的话就只能去联系那个CA机构, 让他们提供完整的链文件了。