检查域名证书的过期时间

随着业务的发展,域名也越来越多,那么证书管理也就变的越来越复杂。所以写个脚本,该脚本用于批量检查域名的 SSL 证书有效期,并筛选出**即将过期(剩余时间小于指定天数,默认30天)**的证书,帮助运维人员提前感知证书过期风险,避免生产环境中断或服务异常。

脚本内容如下:

#!/bin/bash

DOMAIN_FILE="domains.txt"
WARNING_DAYS=90

echo "检查以下域名 SSL 证书是否将在 $WARNING_DAYS 天内过期..."

while read -r domain || [[ -n "$domain" ]]; do
    # 跳过空行或注释
    [[ -z "$domain" || "$domain" == \#* ]] && continue

    # 获取证书过期日期
    end_date=$(echo | openssl s_client -servername "$domain" -connect "$domain:443" 2>/dev/null \
               | openssl x509 -noout -enddate 2>/dev/null)

    if [[ -z "$end_date" ]]; then
        echo "$domain - 无法获取证书"
        continue
    fi

    # 提取日期
    end_date=${end_date#*=}  # 去掉 "notAfter=" 部分
    end_timestamp=$(date -d "$end_date" +%s)
    now_timestamp=$(date +%s)

    # 计算剩余天数
    remaining_days=$(( (end_timestamp - now_timestamp) / 86400 ))

    if (( remaining_days < WARNING_DAYS )); then
        echo "$domain - 剩余 $remaining_days 天到期(截止 $end_date)"
    fi
done < "$DOMAIN_FILE"

 

domains.txt 内容如下  

test-wxmp.xxx.cn
dev-wxmp.xxx.cn

 

执行结果:

bash check_domain.sh 
检查以下域名 SSL 证书是否将在 90 天内过期...
test-wxmp.xxx.cn - 剩余 49 天到期(截止 Sep 23 23:59:59 2025 GMT)
dev-wxmp.xxx.cn - 剩余 49 天到期(截止 Sep 23 23:59:59 2025 GMT)

  

 

posted @ 2025-08-05 09:31  羊脂玉净瓶  阅读(11)  评论(0)    收藏  举报