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