FreezeJ' Blog

用openssl x509检查证书是否过期

2021-05-20

openssl x509命令可以对证书做很多操作,可以参考: https://blog.csdn.net/as3luyuan123/article/details/16873093

#!/bin/bash
# 检查证书文件一定天数内是否过期
USAGE="USAGE: sh $0 {check_dir} {expire_date}\neg: sh $0 /etc/nginx/ssl/ 30"
if [[ $# -ne 2 ]];then
    echo -e ${USAGE}
    exit 1
fi

check_dir=$1
if ! test -d ${check_dir};then
    echo "check_dir必须为一个目录,表示检查的目录"
    echo -e ${USAGE}
    exit 2
fi
expire_date=$2  # 过期天数
if ! [[ ${expire_date} -gt 0 ]] 2>/dev/null;then
    echo "expire_date必须为正整数,表示检查过期的天数"
    echo -e ${USAGE}
    exit 3
fi
crt_file_list=`ls -1 ${check_dir} | grep -E '\.crt$|\.pem$'`  # 检查的文件列表
exit_code=0  # 退出状态码

# 遍历证书文件
for crt_file in ${crt_file_list};do
  check_file=`echo ${check_dir}/${crt_file} | sed 's#//#/#g'`
  if ! openssl x509 -in ${check_file} -checkend `expr 60 \* 60 \* 24 \* ${expire_date}` &> /dev/null; then
    echo 证书文件:${check_file} 域名:`openssl x509 -in ${check_file} -noout -subject -nameopt multiline | grep commonName | awk -F"=" '{print $2}'` ${expire_date}天内过期
    exit_code=4
  fi
done
exit ${exit_code}

直接检测域名证书可以使用以下网站:
https://csr.chinassl.net/ssl-checker.html

Tags: Linux