简单脚本监控 SSL 证书,并到期提醒续签
![](https://static001.geekbang.org/infoq/89/899ca757d83898376d3b4a2a91cd7295.gif)
随着 https 的普及,或者说被强制使用,需要维护的 SSL 证书越来越多,而且由于各种原因吧,需要在各种不同的平台申请维护证书,时间长了,总有证书忘记续签
有些使用了 letsencrypt 自动续签,但是某些原因,并不稳定,经常续签失败,letsencrypt 的邮件通知有时候又会被忽略掉
所以写了个简单的证书监控的脚本,结合 zabbix 进行监控,到期提醒续签
脚本很简单,就三个方法,获取证书、获取证书时间,获取到期天数
网上有人用 load_cerrtificate,结合 ssl.get_server_certificate(url,port)来获取证书,其实这个获取到的证书是不对的,这里获取到的证书是解析完 url,解析到对应服务器,获取服务器上 443 端口访问到的第一个证书,并不是传入 url 的域名的证书
所以这里通过 socket 的方式,建立连接,获取对应域名的证书,再获取证书的信息
脚本放 zabbix_agent 里面,配置 key
![](https://static001.geekbang.org/infoq/3d/3df74cc5e98fd0be11bcddec8238e89d.png)
在 zabbix_server 用 zabbix_get 验证
![](https://static001.geekbang.org/infoq/9d/9d147948ca7e420a5cdbdb259cdf2930.png)
在 zabbix 中添加监控项,ssl 监控频率不需要设置太密,按天,或者按周检查都可以
![](https://static001.geekbang.org/infoq/f9/f9b1883b92b107d9fa6b934646f44ae3.png)
接着添加触发器,检测到 SSL 剩余一个月提醒续签
![](https://static001.geekbang.org/infoq/d3/d3cefdfe5304577941de28f7d553fd09.png)
到期企业微信告警
![](https://static001.geekbang.org/infoq/dd/dd025272624ec0fca9ad996717176178.png)
脚本很简单,不用 zabbix 的话,通过添加定时任务的方式也可以做,如果项目多的话,手动添加不合适,可以通过脚本获取 web 下面的 server_name 作为参数进行监控
关于 pyopenssl 包更多信息可查看文档https://www.pyopenssl.org/en/stable/introduction.html
版权声明: 本文为 InfoQ 作者【运维研习社】的原创文章。
原文链接:【http://xie.infoq.cn/article/4eaf234ef9cfcb9aafcbb9c3c】。文章转载请联系作者。
评论