You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.6 KiB
83 lines
1.6 KiB
#!/bin/bash
|
|
readonly DOMAIN=$1
|
|
readonly PROTOCOL=${2:-https}
|
|
readonly TIMEOUT=10 # max seconds to wait
|
|
|
|
result=0
|
|
|
|
function usage {
|
|
echo 'usage: <DOMAIN> [ https | 443 | smtps | 587 | pop3 | 993 | imap | 995 | ALL ]'
|
|
exit 1
|
|
}
|
|
|
|
function check_ssl {
|
|
local protocol=$1
|
|
case $protocol in
|
|
SMTPS)
|
|
local extra="-starttls smtp -showcerts"
|
|
;;
|
|
esac
|
|
|
|
echo -n "$protocol "
|
|
|
|
certificate_info=$(echo | timeout $TIMEOUT openssl s_client $extra -connect $DOMAIN:$2 2>/dev/null)
|
|
|
|
issuer=$(echo "$certificate_info" | openssl x509 -noout -text 2>/dev/null | grep Issuer: | cut -d: -f2)
|
|
date=$(echo "$certificate_info" | openssl x509 -noout -enddate 2>/dev/null | cut -d'=' -f2)
|
|
date_s=$(date -d "${date}" +%s)
|
|
now_s=$(date -d now +%s)
|
|
date_diff=$(((date_s - now_s) / 86400))
|
|
|
|
if [[ -z $date ]]; then
|
|
echo -n "does not respond "
|
|
echo -ne "\033[31;1m"
|
|
echo FAILURE
|
|
((result += 1))
|
|
elif [[ $date_diff -gt 20 ]]; then
|
|
echo -n "issuer:$issuer "
|
|
echo -n "will expire in $date_diff days "
|
|
echo -ne "\033[32;1m"
|
|
echo ok
|
|
elif [[ $date_diff -gt 0 ]]; then
|
|
echo -n "issuer:$issuer "
|
|
echo -n "will expire in $date_diff days "
|
|
echo -ne "\033[31;1m"
|
|
echo WARNING
|
|
((result += 1))
|
|
else
|
|
echo -n "issuer:$issuer "
|
|
echo -n "has already expired $date_diff ago "
|
|
echo -ne "\033[31;1m"
|
|
echo FAILURE
|
|
((result += 1))
|
|
fi
|
|
echo -ne "\033[0m"
|
|
}
|
|
|
|
#MAIN
|
|
[[ -z "$DOMAIN" ]] && usage
|
|
case $PROTOCOL in
|
|
https | 443)
|
|
check_ssl HTTPS 443
|
|
;;
|
|
smtps | 587)
|
|
check_ssl SMTPS 587
|
|
;;
|
|
pop3 | 995)
|
|
check_ssl POP3 995
|
|
;;
|
|
imap | 993)
|
|
check_ssl IMAP 993
|
|
;;
|
|
all | ALL)
|
|
check_ssl HTTPS 443
|
|
check_ssl SMTPS 587
|
|
check_ssl POP3 995
|
|
check_ssl IMAP 993
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
|
|
exit "$result"
|