跳过正文
  1. Posts/

shell脚本监控ssl证书到期时间

·173 字·1 分钟·
Kubehan
作者
Kubehan
云原生知识栈:深度解析容器技术、Kubernetes、Istio、DevOps 实践、Prometheus 监控、Envoy 代理、Golang 开发及云原生架构与微服务趋势的专业博客

网站的证书需要监控起来避免证书过期影响业务

shell脚本监控ssl证书到期时间

#!/bin/bash

# @Author: HanWei

# @Date:   2020-03-09 15:50:59

# @Last Modified by:   HanWei

# @Last Modified time: 2020-03-10 17:49:51

# @E-mail: han_wei_95@163.com

#!/bin/bash

################ Version Info ##################

# Version:     1.0

# Attention:   通过域名获取证书的过期时间

################################################

#      1.通过域名获取证书的过期时间

################################################

#需求: 两个文件,一个存放域名信息,一个是检测脚本 domain_ssl.info文件存放域名:端口 www.baidu.com:443   check.sh为执行检测脚本 

# 加载环境变量

. /etc/profile

. ~/.bash_profile

. /etc/bashrc

# 脚本所在目录即脚本名称

script_dir=$( cd “$( dirname “$0”  )” && pwd )

script_name=$(basename ${0})

readFile="${script_dir}/domain_ssl.info"

grep -v ‘^#’ ${readFile} | while read line;do # 读取存储了需要监测的域名的文件

    # echo “${line}”

    get_domain=$(echo “${line}” | awk -F ‘:’ ‘{print $1}’)

    get_port=$(echo “${line}” | awk -F ‘:’ ‘{print $2}’)

    # echo ${get_domain}

    # echo “${get_port}”

    # echo “======”

    # 使用openssl获取域名的证书情况,然后获取其中的到期时间

    END_TIME=$(echo | openssl s_client -servername ${get_domain}  -connect ${get_domain}:${get_port} 2>/dev/null | openssl x509 -noout -dates |grep ‘After’| awk -F ‘=’ ‘{print $2}’| awk -F ’ +’ ‘{print $1,$2,$4 }’ )

    END_TIME1=$(date +%s -d “$END_TIME”) # 将日期转化为时间戳

    NOW_TIME=$(date +%s -d “$(date “+%Y-%m-%d %H:%M:%S”)”) # 将当前的日期也转化为时间戳

    RST=$(($(($END_TIME1 - $NOW_TIME))/(60*60*24))) # 到期时间减去目前时间再转化为天数

    echo “证书有效天数剩余:${RST}”

   if [ $RST -lt 30 ];then

     echo “$get_domain https 证书有效期少于30天,存在风险”

   else

     echo “$get_domain https 证书有效期在30天以上,放心使用!”

   fi

done