检查域名证书的过期时间
随着业务的发展,域名也越来越多,那么证书管理也就变的越来越复杂。所以写个脚本,该脚本用于批量检查域名的 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)

浙公网安备 33010602011771号