批量检查域名SSL证书的有效期

  1. 一、缘由
  2. 二、脚本

一、缘由

我司的某个主域名有很多子域名,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

×

喜欢就点赞,疼爱就打赏