使用 bash 和 curl 检查 Sukka 的 SSL 的状态、并展示出来,DEMO: https://lab.skk.moe/ssl

最近看了 MDx 主题的作者无垠的博客,看到他用 python 写了个检查 SSL 到期情况的工具、在 VPS 定时任务每天跑,并把结果展示出来。

无垠在 他的博客 中说他获取 SSL 信息直接用的 curl,并没有使用其他库。正巧之前 fork 了一份 ChromeChecker 做了 CheckChrome,趁机重新学习了 bash,所以我觉得我可以用 bash 实现一个类似的检查 SSL 状态的工具。而且每天跑的定时任务,正好可以交给 Travis CI 完成。

使用 curl 的 -v 参数可以输出连接的信息、包括 TLS 握手的信息。比如在终端里试试这个:

$ curl https://skk.moe -v
但是上面不仅会输出连接的相关信息,还会把 Response Body 的内容也输出到终端中,所以使用 -o 参数将 Response Body 的内容保存成一个文件,然后输出到 /dev/null 中;为了能检测已经过期的 SSL 证书,还需要让 curl 无视证书错误,所以需要再带上一个 -k 参数。

$ curl https://skk.moe -k -v -s -o /dev/null
剩下的就容易了,把日志输出到文件中,然后使用 cat 和 grep 收集相关的信息并加以处理就行。最终实现就会类似于这种

mkdir ./tmp -p

curl https://skk.moe -k -v -s -o /dev/null 2> ./tmp/ca.info

cat ./tmp/ca.info | grep 'start date: ' > ./tmp/skk.moe.info
cat ./tmp/ca.info | grep 'expire date: ' >> ./tmp/skk.moe.info
cat ./tmp/ca.info | grep 'issuer: ' >> ./tmp/skk.moe.info
cat ./tmp/ca.info | grep 'SSL certificate verify' >> ./tmp/skk.moe.info
cat ./tmp/ca.info | grep 'subject: ' >> ./tmp/skk.moe.info
把域名换成变量就可以复用代码。当然你还可以处理一下得到的数据,可以存进数据库或者存进 json、xml。有了数据,做个前端展示页也是小菜一碟了。

最后是 我的 Demo,相关的代码开源在 CheckSSL

 

作者:Sukka
来源:用 curl 检查 SSL 到期情况 | Sukka's Blog
链接:https://blog.skk.moe/post/checkssl-status/

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。