如何在命令行里快速方便地查看网站 SSL 证书有效期?

一句话命令(请替换命令中的 $host 变量值):

1
echo | openssl s_client -servername NAME -connect "$host":443 2>/dev/null | openssl x509 -noout -dates

例子:

1
2
3
$ echo | openssl s_client -servername NAME -connect "ifttl.com":443 2>/dev/null | openssl x509 -noout -dates
notBefore=Sep  3 13:11:07 2019 GMT
notAfter=Sep  3 13:11:07 2020 GMT

2020 年 9 月 3 号过期。


一些废话

Letsencrypt 每次签的免费证书只有三个月有效期,固然能够通过 crontab 跑脚本自动续期,但是各个环节也都有可能出问题,再加上维护的域名数量一多,续期失败的概率就不容小觑。还是需要把证书的有效期监控起来,以免证书过期,网站打不开。

查看网站证书有效期最笨的办法是用浏览器打开网站,然后在浏览器里查看证书信息。

SSLPod 看上去是个可以很好的解决方案,能够帮你监控 SSL 证书有效期,还包含了告警等多项功能。

证书监控(SSLPod)是一款集多个 HTTPS 站点安全检测、证书有效期管理以及异常告警等功能于一体的系统。它提供了可视化评级图表和可交互的跨品牌证书管理仪表盘,支持 HTTPS 安全评级,证书品牌、证书有效期、SSL 漏洞、PCI DSS & ATS 合规监控和集中管理;还能够及时地将异常情况通过邮件、微信、短信进行告警通知,并根据评测结果,给出改造建议。

不过,我还是需要一个更简单,更方便地看到证书过期时间的办法。