ssl证书过期监控
一、需求引入
之前试过有个网站证书悄悄过期了,上一年不是过年过的特别早么,那个春节关服务的定时脚本竟然忘记关了!!!(幸好领导没有看到,除非往上翻监控信息,不然上班那会一般只会看到最新的数据库备份监控信息)
这玩意实际上是nginx加载了停服务的虚拟配置文件,我就虚构了一个假的端口,proxy_pass 转过去。至于原端口nginx代理某个静态网目录是没有停的。当时吓坏了,把人家网站关了那么久耶(0点关到7点)。然后一早起来,我手动开起来了。但发现页面说是不安全的,除非点击继续访问(算了知道是证书过期,回公司再弄)。这关停的时间内竟然没有人发现,没有人投诉,不过有些事情不怕一万,只怕万一,如果是一个非常重要的网站,经常有人看的,证书过期了,作为运维的你竟然没发现,呵呵,你就等着写故障报告吧~~~是不是细思极恐,所以嘛,做运维就应该要有点前瞻性,不要等事情发生才懂得预防,毕竟,防患于未然会省去后续很多活的
二、需求实现
有两个脚本都是用openssl去搞的(当然我是抄的,一个抄网上,一个抄前运维的,就改了点就能用了)
1、check_ssl.sh ——》运行需要接参数,用来做单一域名测试不错
1 #!/bin/bash 2 3 # 检测https证书有效期 4 if [ $# -ne 1 ]; then 5 echo "请输入需要的检查域名: 例如 /check_ssl.sh www.baidu.com" 6 else 7 #参数设置为host 8 host=$1 9 #最后到期时间 10 #end_date=`echo |openssl s_client -servername $host -connet $host:443 2nssl x509 -noout -dates|awk -F '=' '/notAfter/{print $2}'` 11 #最后到期时间转换为时间戳 12 end_data=`date +%s -d "$(echo |openssl s_client -servername $host -connect $host:443 2>/dev/null | openssl x509 -noout -dates|awk -F '=' '/notAfter/{print $2}')"` 13 #当前时间戳 14 new_date=$(date +%s) 15 #计算SSL证书截止到现在的过期天数 16 #计算SSL正式到期时间和当前时间的差值 17 days=$(expr $(expr $end_data - $new_date) / 86400) 18 echo -e "