目前大部分免费的SSL证书有效期都是3个月,如果管理的域名比较多,可能有时候会遗漏更新导致证书过期问题。本文使用简单的脚本实现多域名自动检测,并自动推送到企微消息
shell脚本如下:
#!/bin/bash
domainNames=("baidu.com" "weibo.com")
minLimit=30 #剩余多少天报警
wxWorkKey="xxxxxx" #企微机器人key
PORT=443 #端口
# 设置要检查的域名和端口
for DOMAIN in "${domainNames[@]}"
do
# 获取SSL证书信息
CERT_INFO=$(openssl s_client -connect ${DOMAIN}:${PORT} -servername ${DOMAIN} -showcerts </dev/null 2>/dev/null | openssl x509 -dates -noout)
# 提取证书过期日期信息
START_DATE=$(echo "${CERT_INFO}" | grep "notBefore" | cut -d'=' -f 2)
END_DATE=$(echo "${CERT_INFO}" | grep "notAfter" | cut -d'=' -f 2)
# 将日期转换为Unix时间戳
START_TIMESTAMP=$(date -d "${START_DATE}" +%s)
END_TIMESTAMP=$(date -d "${END_DATE}" +%s)
CURRENT_TIMESTAMP=$(date +%s)
# 计算剩余天数
DAYS_REMAINING=$(( (${END_TIMESTAMP} - ${CURRENT_TIMESTAMP}) / 86400 ))
# 输出结果
echo " 域名: ${DOMAIN}"
echo " - ssl证书开始日期: ${START_DATE},过期日期: ${END_DATE}"
echo " - 剩余天数: ${DAYS_REMAINING} 天"
# 检查是否过期
if [ ${DAYS_REMAINING} -lt $minLimit ]; then
#如果过期,发送通知到企微机器人
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='${wxWorkKey} \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '
{
"msgtype": "text",
"text": {
"content": "ssl检测:'${DOMAIN}'剩余过期时间'${DAYS_REMAINING}'天"
}
}'
fi
done
测试效果以及企微机器人Key获取方式如下:
定时执行脚本
可以使用cron
来定期执行脚本,实现自动通知功能,由于比较简单,请自行百度