一、缘由
我司的某个主域名有很多子域名,SSL证书到期提示更换,由于没有记录哪个域名使用了https,手动一个个去验证很麻烦,就想到靠一个脚本解决。
二、脚本
先将子域名一行一个地写入https_list.txt文件里,然后执行脚本即可。
#!/bin/bash
# 检测https证书有效
echo '开始检查 https证书有效期 '
# 先手动写域名到文件https_list.txt中,再读取文件检查证书是否过期了
# 例子:
#echo 'www.baidu.com' >> https_list.txt
source /etc/profile
# 定义错误的域名
errorDominStr=""
while read line; do
echo "====================================================================================="
echo "当前检测的域名:" $line
end_time=$(echo | timeout 1 openssl s_client -servername $line -connect $line:443 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | awk -F '=' '{print $2}'
)
([ $? -ne 0 ] || [[ $end_time == '' ]]) && echo '该域名链接不上,跳到下一个域名' && continue
end_times=`date -d "$end_time" +%s `
current_times=`date -d "$(date -u '+%b %d %T %Y GMT') " +%s `
let left_time=$end_times-$current_times
days=`expr $left_time / 86400`
echo "剩余天数: " $days
[ $days -lt 60 ] && echo "https 证书有效期少于60天,存在风险" && errorDominStr="$errorDominStr \n $line"
done < ~/https_list.txt
echo -e "准备过期的域名为: \n $errorDominStr"
if [ "$errorDominStr" = "" ]
then
echo "不包含准备过期的域名"
else
echo "包含准备过期的域名" && exit 10
fi
echo "Good bye!"
exit 0
注意:脚本输出的准备过期的域名提示仅供参考,具体还需要看脚本的详细日志逐个甄别
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com